r - 为什么这个简单的功能不起作用?

标签 r function

我首先定义了新变量x,然后创建了在其主体内需要x的函数(而不是作为参数)。请参阅下面的代码

x <- c(1,2,3)
f1 <- function() {
  x^2
}

rm(x)

f2 <- function() {
  x <- c(1,2,3)
  f1()
}

f(2)  
Error in f1() : object 'x' not found

当我删除 x 并定义新函数 f2 时,它首先定义 x 然后执行 f1,它显示未找到对象x

我只是想知道为什么这不起作用以及如何克服这个问题。我不希望将 x 命名为 f1 中的参数。

请提供适当的标题,因为我不知道这是什么类型的问题。

最佳答案

您可以使用closure制作具有所需属性的 f1:

makeF <- function(){
  x <- c(1,2,3)
  f1 <- function() {
    x^2
  }
  f1
}

f1 <- makeF()
f1() #returns 1 4 9

全局范围内没有 x,但 f1 仍然知道定义它的环境中的 x

关于r - 为什么这个简单的功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485950/

相关文章:

postgresql - PLpgSQL 函数不返回匹配的标题

c - 当全局变量的值在另一个函数内发生变化时,在任何其他函数中使用全局变量的值

r - 导入数据集时出现问题: `Error in scan(...): line 1 did not have 145 elements`

r - R 并行扩展是否打破了 `apply` 的比喻?

将简单文本文件读入 R - BLS 数据

r - R : GenSA running time中的模拟退火

javascript - 在 JavaScript 中将带有参数的函数作为另一个函数的参数传递

c++ - 没有段错误为什么?返回的函数值用作参数

r - 查找函数返回的对象的名称

r - 如何使用 --enable-R-shlib 配置 R-3.0.1