我需要计算包含多个表的列表中每个表的行数。我写了一个循环,但它不能做我想要的: 这是我的虚拟数据:
obj1 <- list(bodyPart = c("leg", "arm", "knee"),side = c("LEFT", "RIGHT", "LEFT"), device = c("LLI", "LSM", "GHT"), id = c("AA", "BB", "CC")) %>% as.data.frame()
obj2 <- list(bodyPart = c("leg", "arm", "knee"), side = c("LEFT", "LEFT", "LEFT"), device = c("GOM", "LSM", "YYY"), id = c("ZZ", "DD", "FF")) %>% as.data.frame()
x <- list(M = obj1, B = obj2)
还有 for 循环:
for (table in names(x)) {
print(table)
print(nrow(table))
}
我希望输出是每个表的行数(M = 3,B = 3),但它只产生每个表的 NULL。 您能纠正我吗?预先感谢!
您应该使用
x[[table]]
来索引 x
中的元素
for (table in names(x)) {
print(table)
print(nrow(x[[table]]))
}
这给出了
[1] "M"
[1] 3
[1] "B"
[1] 3
否则,
table
只是您列表中的名称x
,而不是它所指的内容。