计数列表中的对象数
任何人都知道R函数将返回列表中的项目数量?
length(x)
对像我这样的R
新人的build议:当心,以下是单个对象的列表:
> mylist <- list (1:10) > length (mylist) [1] 1
在这种情况下,你不是在寻找名单的长度,而是在寻找其第一个元素:
> length (mylist[[1]]) [1] 10
这是一个“真实”的列表:
> mylist <- list(1:10, rnorm(25), letters[1:3]) > length (mylist) [1] 3
另外, R
似乎认为data.frame是一个列表:
> df <- data.frame (matrix(0, ncol = 30, nrow = 2)) > typeof (df) [1] "list"
在这种情况下,您可能对nrow()
和nrow()
感兴趣,而不是length()
:
> ncol (df) [1] 30 > nrow (df) [1] 2
虽然length()
也可以工作(但是当你的data.frame只有一列时,这是一个窍门):
> length (df) [1] 30 > length (df[[1]]) [1] 2
我花了很多年试图弄清楚这一点,但它很简单! 您可以使用length(·)
。 length(mylist)
会告诉你mylist
包含的对象的数量。
…只是意识到有人已经回答了这个,对不起!
让我们创build一个空列表(不是必需的,但是很好知道):
> mylist <- vector(mode="list")
让我们把它的一些东西 – 3个组件/索引/标签(无论你想调用它),每个元素的数量不同:
> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))
如果您只对列表中的组件数量感兴趣,请使用:
> length(mylist) [1] 3
如果您对列表的特定组件中元素的长度感兴趣,请使用:(在此引用相同的组件)
length(mylist[[1]]) [1] 10 length(mylist[["record1"]] [1] 10
如果您对列表中所有组件的所有元素的长度感兴趣,请使用:
> sum(sapply(mylist,length)) [1] 17
您也可以使用unlist()
,这对处理列表通常很有用:
> mylist <- list(A = c(1:3), B = c(4:6), C = c(7:9)) > mylist $A [1] 1 2 3 $B [1] 4 5 6 $C [1] 7 8 9 > unlist(mylist) A1 A2 A3 B1 B2 B3 C1 C2 C3 1 2 3 4 5 6 7 8 9 > length(unlist(mylist)) [1] 9
unlist()是在列表上执行其他函数的简单方法,例如:
> sum(mylist) Error in sum(mylist) : invalid 'type' (list) of argument > sum(unlist(mylist)) [1] 45