计数列表中的对象数

任何人都知道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