如何在函数内使用 ls() 搜索环境?
我想找到一组函数并保存它们,因为我想将它们以 Rdata 文件发送到远程服务器,并且我不想在服务器上安装新的包。
尽管我使用下面的方法遇到错误,但欢迎更简单/更好的方法。
MWE:
这里有两个虚拟函数:
abcd.fun.1 <- function() return(1)
abcd.fun.2 <- function() return(2)
我可以识别虚拟函数:
ls()[grep('abcd', ls())]
但是当我将其包装在函数中时:
find.test <- function(x) {
return(ls()[grep(x, ls())])
}
find.test('abcd')
该函数返回character(0)
最终我想
save(find.test('abcd'), file = test.Rdata)
I want to find a set of functions and save them, because I want to send them to a remote server in an Rdata file, and I don't want to install a new package on the server.
Although I am getting an error using the approach below, easier / better approaches are welcome.
MWE:
Here are two dummy functions:
abcd.fun.1 <- function() return(1)
abcd.fun.2 <- function() return(2)
I can identify the dummy functions:
ls()[grep('abcd', ls())]
But when I wrap this in a function:
find.test <- function(x) {
return(ls()[grep(x, ls())])
}
find.test('abcd')
The function returns character(0)
Ultimately I would like to
save(find.test('abcd'), file = test.Rdata)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ls
的pattern=
参数?函数作用域,不是全局环境(这在
?ls
中进行了解释)。如果您想从函数中列出全局环境中的对象,请指定
envir=.GlobalEnv
。pattern=
argument tols
?ls
inside a function lists the objects that exist within thefunction scope, not the global environment (this is explained in
?ls
).If you want to list the objects in the global environment from a function, specify
envir=.GlobalEnv
.您需要告诉您的函数列出其自身以外的环境中的对象,例如全局环境。 (同时,您还可以将正则表达式模式指定为
ls
的参数。):有关
ls( 的更多信息,请参阅
和?ls
)?environment
用于指定环境的其他选项。You need to tell your function to list objects in an environment other than itself, e.g. the global environment. (And while you're at it, you can also specify the regex pattern as an argument to
ls
.):See
?ls
for more info aboutls()
and?environment
for other options to specify the environment.