当不允许使用全局变量时,如何从另一个函数中访问元素(<<-)

问题描述 投票:0回答:1
b <- function() {
    x = 10
}

c <- function() {
    d = b()
    print(x)
}

当我不允许使用全局变量时,如何访问元素 "x"(<<-)

r rstudio rscript
1个回答
4
投票

您的功能 b 返回值 10. 您的功能 c 运行 d = b()的返回值,所以它将 b 的新对象,名为 d. 这很好!你不希望你的 c 函数,以便知道这个名字 x 在内部使用 b 定义 - 您刚刚提供了一个新的名称 d!

变化 print(x)print(d) 你就可以了。

顺便说一下,不要用 c 作为自定义函数的名称。现在已经有一个名为 c,这也是最常用的功能之一。创建你自己的 c() 会引起问题。


0
投票

如果你的例子没有真正反映出你想要的东西,有可能你是想返回b真正计算的现有值,以及x值。 你可以返回一个列表,其中既可以包含原始的返回值,也可以包含x的值。

b <- function() {
x=10
...
list(x=x, previous=whatever_it_previously_returned)
}

或者你也可以看看闭合,但你需要更精确地解释你想达到的目的,以及你想在哪里获得访问权。x.

© www.soinside.com 2019 - 2024. All rights reserved.