我创建了一个保存在.txt文件中的函数(很长)。 它工作得很好(我使用source(<>)来访问它)。 我的问题是我在该函数中创建了一些变量 即:
myfun<-function(a,b) {
Var1=....
Var2=Var1 + ..
}
现在我想得到那些变量。
当我在函数中包含return()
时,它很好:屏幕上出现值,但是当我在函数中键入Var1 时,我有一条错误消息“无法找到该对象”。
我是R的新手,但我认为这可能是因为“myfun”在不同的环境中运行,而不是全球运营,但是当我这样做时
environment()
environment: R_GlobalEnv>
environment(myfun1)
environment: R_GlobalEnv>
在我看来问题出在其他地方......
有什么想法吗?
由于
答案 0 :(得分:1)
如果你想以一种很好的方式做到这一点,写一个类,而不是提供一个打印方法。在这个类中,可以返回不可见的变量。一本涵盖这些主题的好书是"The Art of R programming"。
一个简单的解决方法是将稍后需要的每个变量保存在列表中,而不是返回列表 (正如彼得指出的那样):
return(list(VAR1=VAR1, .....))
答案 1 :(得分:1)
我意识到这个答案超过3年但我相信您正在寻找的选项如下:
myfun <- function(a,b) {
Var1 = (a + b) / 2 # do whatever logic you have to do here...
Var2 <<- Var1 + a # then output result to Global Environment with the "<<-" object.
}
双“&lt;&lt; - ”赋值运算符将“Var2”输出到全局环境,然后您可以根据需要使用或引用它,而无需在函数内使用“return()”。