1

我创建了一个保存在 .txt 文件中的函数(很长)。它运行良好(我使用 source(< >) 来访问它)。我的问题是我在该函数中创建了一些变量,即:

myfun<-function(a,b) {
Var1=....
Var2=Var1 + ..
}

现在我想得到这些变量。当我包含return()在函数内部时,它很好:值出现在屏幕上,但是当我在函数外部键入 Var1 时,我有一条错误消息“找不到对象”。我是 R 新手,但我想这可能是因为“myfun”在与全球环境不同的环境中运行,但是当我这样做时

environment()
environment: R_GlobalEnv>
environment(myfun1)
environment: R_GlobalEnv>

在我看来,问题出在其他地方......

任何的想法?

谢谢

4

2 回答 2

3

我意识到这个答案已经超过 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.  
}

双“<<-”赋值运算符会将“Var2”输出到全局环境,然后您可以随意使用或引用它,而无需在函数中使用“return()”。

于 2017-03-29T13:17:14.210 回答
2

如果您想以一种不错的方式做到这一点,请编写一个类,然后提供一个打印方法。在此类中,可以返回不可见的变量。一本涵盖这些主题的好书是“R 编程的艺术”

一个简单的解决方法是将稍后需要的每个变量保存在列表中,然后返回列表(正如彼得指出的那样):

return(list(VAR1=VAR1, .....))
于 2013-08-08T10:47:41.000 回答