Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从环境中获取数据帧列表以备以后使用?_R_Lapply_Sapply - Fatal编程技术网

R 如何从环境中获取数据帧列表以备以后使用?

R 如何从环境中获取数据帧列表以备以后使用?,r,lapply,sapply,R,Lapply,Sapply,我想获得一种自动化的方法来获取我的许多数据集的子集的nrow()。我有大量的DFs都遵循一个命名方案,我想在每个DFs上运行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,

我想获得一种自动化的方法来获取我的许多数据集的子集的
nrow()
。我有大量的DFs都遵循一个命名方案,我想在每个DFs上运行
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))
#生成两个相关的DF和一个不相关的DF
测试5Try

如果需要组合,也可以使用
data.frame
do.call
+
rbind
组合,例如

data.frame(lapply(mget(ls(pattern = "^test")), nrow))
##   test_10 test_5
## 1      10      5 


创建data.frames时,请将其放入列表中。太好了,谢谢
mget()
解决了这个问题!
data.frame(lapply(mget(ls(pattern = "^test")), nrow))
##   test_10 test_5
## 1      10      5 
do.call(rbind, lapply(mget(ls(pattern = "^test")), nrow))
##         [,1]
## test_10   10
## test_5     5