是否有一个内置的便利功能,可以返回data.frame,矩阵或向量中元素的数量? length(matrix)
和length(vector)
工作,但length(data.frame)
返回列数。 prod(dim(vector))
总是返回1,但对矩阵/数据帧运行正常。我正在寻找一种适用于所有三种功能的单一功能。Data.frame中的#元素,矩阵,矢量的便利功能?
4
A
回答
6
我不认为一个已经存在,所以只写你自己的。您应该只需要2例,1)名单,2)数组:
elements <- function(x) {
if(is.list(x)) {
do.call(sum,lapply(x, elements))
} else {
length(x)
}
}
d <- data.frame(1:10, letters[1:10])
m <- as.matrix(d)
v <- d[,1]
l <- c(d, list(1:5))
L <- list(l, list(1:10))
elements(d) # data.frame
# [1] 20
elements(m) # matrix
# [1] 20
elements(v) # vector
# [1] 10
elements(l) # list
# [1] 25
elements(L) # list of lists
# [1] 35
5
1
我个人的 '便利功能' 这个是:
Rgames: lssize
function(items){
sizes<-sapply(sapply(sapply(sapply(items,get,simplify=F),unlist,simplify=F),as.vector,simplify=F),length)
return(sizes)
}
它适用于每一个 'typeof运算' 可变我能想到的的。 FWIW,这是我的工具包的一部分,其中包括有用的“在我的工作区发现只有一种类型的变量”:
Rgames: lstype
function(type='closure'){
inlist<-ls(.GlobalEnv)
if (type=='function') type <-'closure'
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
相关问题
- 1. 使用矢量元素设置矩阵的元素
- 2. 获取2D矢量(矩阵)中的元素
- 3. PYTHON 3.6用矢量元素替换矩阵的元素SNAIL/SPIRAL MATRIX AGAIN
- 4. Fortran中的矩阵功能
- 5. 用矢量乘以矩阵(元素明智)Tensorflow
- 6. 通过坐标将矢量元素分配到矩阵MATLAB
- 7. 如何将矩阵的每列乘以Theano中的矢量元素?
- 8. 从MATLAB中的矩阵和矢量创建三维矩阵
- 9. 如何矢量化在MATLAB中指数为矩阵的矩阵?
- 10. 矩阵的矩阵对角元素
- 11. 矩阵和向量的元素乘积
- 12. 查找元素的数量在矩阵
- 13. 矩阵元素
- 14. 矩阵乘矢量乘法
- 15. 矢量矩阵乘法
- 16. 2d矩阵到矢量
- 17. 从矢量矩阵生成
- 18. 矢量分块矩阵
- 19. 转换矩阵data.frame
- 20. 使用GNU Blas子例程的矢量和矩阵之间的元素乘积
- 21. 把不同大小的矢量矩阵
- 22. 用矢量乘以矩阵的行吗?
- 23. Octave - 比较矩阵的列与矢量
- 24. 方向矢量的旋转矩阵
- 25. 矩阵乘法的矢量化
- 26. Matlab:矢量矩阵的行列式
- 27. numpy的矩阵尺寸-TFIDF矢量
- 28. 从矢量减去scipy.sparse矩阵的列
- 29. 矩阵乘法的自动矢量化
- 30. 矢量化连续功率矩阵的创建
我不会认为你需要测试数组的情况下,'length'应该为矩阵和数组返回正确的值 –
@DWin:非常真实,谢谢你的指针 –