【发布时间】:2014-12-25 00:50:36
【问题描述】:
我想获得一种自动化方式来获取我的许多数据集的一个子集的nrow()。我有大量都遵循命名方案的 DF,我想在每个 DF 上运行 nrow()。这就是我想出的:
# generate two relevant and one irrelevant DF
test_5 <- data.frame(rnorm(5))
test_10 <- data.frame(rnorm(10))
irrelevant_df <- data.frame(rnorm(5))
# I want this, but automatically over all test_ DFs
nrow(test_5)
nrow(test_10)
# get all DFs that follow the 'test_' naming scheme
v <- grep('test_', ls(), value = TRUE)
v
l <- as.list(grep('test_', ls(), value = TRUE))
l
# works, but is manual
sapply(list(test_5, test_10), function(x) nrow(x))
# doesn't work (returns NULL), because l,v is stored as chr?
sapply(v, function(x) nrow(x))
sapply(l, function(x) nrow(x))
有没有办法从 ls() 获取对象,以便我可以将结果推送到 {s,l}apply 函数?
作为一个额外的问题,是否可以按顺序获取ls() 对象的列表?因为v 按字母顺序存储它,所以后面的rbind(v, sapply(...)) 给出了错误的结果。
非常感谢任何指针!
【问题讨论】:
-
在创建 data.frames 时将它们放在一个列表中。