Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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
如何从自定义环境中获取所有dataframe对象_R - Fatal编程技术网

如何从自定义环境中获取所有dataframe对象

如何从自定义环境中获取所有dataframe对象,r,R,我想在一个脚本中获取所有数据帧。 为此,我在自定义环境中运行脚本 env <- new.env() source("myScript.R", local = env) 我得到所有对象名称的字符串 我做错了什么 测试环境: env <- new.env() env$d <- data.frame(a=1) env$s <- "hello" env$p <- data.frame(z=1) env$x <- 2 env如果调用ls()而不使用env参数,它将只

我想在一个脚本中获取所有数据帧。 为此,我在自定义环境中运行脚本

env <- new.env()
source("myScript.R", local = env)
我得到所有对象名称的字符串

我做错了什么

测试环境:

env <- new.env()
env$d <- data.frame(a=1)
env$s <- "hello"
env$p <- data.frame(z=1)
env$x <- 2
env如果调用
ls()
而不使用
env
参数,它将只列出当前环境中的名称。您的尝试似乎没有传递该参数。另一个选项是使用
eapply
,它用于在环境中的对象上运行函数。比如说

names(Filter(function(x) x, eapply(env, is.data.frame)))
这是因为
eapply
返回一个命名列表。我们只需从
is.data.frame
中筛选出真实值,然后获取这些名称

mget(ls(),env)
的问题是
ls()
将返回
“env”
,然后
mget()
将在
env
环境中查找名为
env>的变量,该变量不存在。你需要

mget(ls(envir=env), env)
然后,您需要对正在子集的项目列表执行相同的操作

dfs <- ls(envir=env)[sapply(mget(ls(envir=env), env), is.data.frame)]
dfs
mget(ls(envir=env), env)
dfs <- ls(envir=env)[sapply(mget(ls(envir=env), env), is.data.frame)]