R: Count number of objects in list

有人可以推荐一个函数,可以让我计数和返回的项目的数量在一个列表?

library(stringr)


l <- strsplit(words, "a")


if(# number of items in list l < 1)
next
313632 次浏览

长度(x)

获取或设置向量(包括列表)和因子的长度,以及已定义方法的任何其他 R 对象的长度。

长度(x)

以整数或数值向量的形式获取列表或原子向量(is.atom)中每个元素的长度。

I spent ages trying to figure this out but it is simple! You can use length(·). length(mylist) will tell you the number of objects mylist contains.

然后意识到有人已经回答了这个问题——对不起!

对于像我这样的 R新手的建议: 当心,下面是 一个物体的列表:

> 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"

在这种情况下,你可能对 ncol()nrow()而不是 length()感兴趣:

> ncol (df)
[1] 30
> nrow (df)
[1] 2

虽然 length()也可以工作(但是当你的 data.frame 只有一个列的时候这是一个技巧) :

> length (df)
[1] 30
> length (df[[1]])
[1] 2

Let's create an empty list (not required, but good to know):

> 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