r - 计算列表列表中的项目
问题描述
我有一个长度相同的列表 (l1,l2,l3) 的列表 (ll)。
l1 <- list( c("a","b","c") , c("d","e","f") , c(NULL) )
l2 <- list( c("a","b") , c("d","e") , c(NULL) )
l3 <- list( c("a") , c("d") , c("g") )
ll <- list(l1,l2,l3)
str(ll)
List of 3
$ :List of 3
..$ : chr [1:3] "a" "b" "c"
..$ : chr [1:3] "d" "e" "f"
..$ : NULL
$ :List of 3
..$ : chr [1:2] "a" "b"
..$ : chr [1:2] "d" "e"
..$ : NULL
$ :List of 3
..$ : chr "a"
..$ : chr "d"
..$ : chr "g"
有没有办法创建一个(摘要?)表来计算/比较每个列表中有多少项目,而不使用 for/loop?
我正在考虑这样的输出:
list 1 2 3
l1 3 3 0
l2 2 2 0
l3 1 1 1
解决方案
我们可以lengths
使用lapply
do.call(rbind, lapply(ll, lengths))
# [,1] [,2] [,3]
#[1,] 3 3 0
#[2,] 2 2 0
#[3,] 1 1 1
或lengths
开启simplify2array
lengths(simplify2array(ll))
# [,1] [,2] [,3]
#[1,] 3 2 1
#[2,] 3 2 1
#[3,] 0 0 1
转置得到预期的输出
推荐阅读
- android - 有没有办法从颤振代码访问wifi密码?
- hashicorp-vault - 如何在生产中使用 Hashicorp Vault 的 AppRole?
- laravel - 检查 Blade 中 Stack 指令的内容
- python - 如何使用正则表达式 Python 在时间范围之间打印具有 GET 的行
- c# - 通过 WinForms 使用解决方案范围的资源
- visual-studio - Python 3 的行为类似于 Python 2 除法没有余数,并且 print 不是函数
- php - 检查用户角色时出错 - 在 null 上调用成员函数 hasRole()
- r - 如何将 for 循环转换为在 r 中应用
- payment-gateway - ionic4 中的 GOOGLE PAY 支付集成
- python - 如果字符串尚未包含此值,则向字符串添加值