data.frame,matrix,vector中#元素的便捷功能?

SFu*_*n28 4 r

是否有内置的便捷函数返回data.frame,matrix或vector中的元素数量? length( matrix )length( vector )工作,但length( data.frame )返回列数. prod( dim( vector ) )始终返回1,但与matrix/data.frame一起正常工作.我正在寻找适合这三种功能的单一功能.

Jos*_*ich 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
Run Code Online (Sandbox Code Playgroud)


TMS*_*TMS 5

怎么样length(unlist(whatever))

(注意:我只想回答说没有这样的功能,但我突然想起我刚刚在30分钟前使用过unlist,并且可以应用它来获得简单的解决方案!真是巧合...)

  • 如果`what`很大,`unlist(whatever)`可能很耗时. (3认同)