【问题标题】:R- accessing varibales created within a user defined function after end of functionR-在函数结束后访问在用户定义的函数中创建的变量
【发布时间】:2012-06-19 00:21:43
【问题描述】:

取一个基本函数

fun<-function(){
x<-c(1,2,3,4,5)
y<-c(1,2,3,4,5)

t<-x+y
return(t)

}

在我运行函数之后,有没有办法可以访问函数中创建的任何变量。通过指定变量 - 像这样:

fun$y

fun$t

或者是否有某种方式要求 R 将变量保存在函数中以在我当前的 R 会话期间使用(我不希望永久保存它)。又名类似于:

fun<-function(){
x<-c(1,2,3,4,5)
y<-c(1,2,3,4,5)

t<-x+y
Y<-save y for latter use
T<-save T for latter use
return(t)

}

谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    您不能在其范围之外使用变量。

    您可以做的是使用列表从您的函数中返回多个值。

    这是一个很好的example

    【讨论】:

    • 也许我遗漏了一些重要的东西。但是,如果我要按照链接中的信息并在上面的代码中添加两行 "newList
    • @VincentMoriarty 再一次,函数(通常)没有副作用。如果您的函数returns 某事,您必须分配您的函数的输出到某事。即result &lt;- fun().
    • 您仍在尝试访问函数的局部变量。使用 result
    • 这就是票!谢谢大家
    【解决方案2】:

    是和不是。

    是的,从技术上讲,可以对函数范围之外的变量进行赋值,以便可以在其他地方访问它们。这通常使用&lt;&lt;-(如果找不到被分配的变量时在全局环境中分配)或调用assign 并直接指定环境来完成。

    但是……

    ,您可能应该这样做。 R 是一种函数式语言,这意味着它的使用目的是使其功能不会产生副作用。如果您过多地违反此原则,您将不可避免地遇到严重的问题,这些问题即使不是不可能调试也很难。

    如果您在以后需要的函数中创建变量,最好将它们全部返回到一个列表中,如 Benito 所述。

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2017-09-13
      • 2011-06-23
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      相关资源
      最近更新 更多