是否有一個內置的便利功能,可以返回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:非常真實,謝謝你的指針 –