2

我有两个 .R 文件,plotDataSet(..) 和 plotAllDataSets()。plotDataSet(..) 调用 curve(..)(在 R 图形库中),而 plotAllDataSets() 调用 plotDataSet(..)。plotDataSet(..) 将函数作为参数,并将其传递给 curve(..)。

我想从函数列表中将我的函数参数 curve(..) 传递到 plotDataSet(..) 中,例如:

 v <- c(function(x){x}, function(x){x*x}, function(x){x*x}, function(x){x*x*x}, 
     function(x){x*x}, function(x){x*x*x}, function(x){x*x*x})
for (i in 1:7) {
    plotSaveData(data, v[i], i)
}

我得到以下输出:Error in eval(expr, envir, enclos) : could not find function "expectedOrderEquation".

有趣的是,当我调用 plotDataSet(..) 并传入一个类似的函数function(x){x*x}时,它工作正常:

for (i in 1:7) {
    plotSaveData(data, function(x) {x}, i)
}

但这不会让我在循环浏览函数列表时调用 plotSaveData(..) 。

有人可以解释为什么这不起作用吗?

我希望这已经足够了,但我很乐意根据需要提供更多上下文。另外,我对 R 有点陌生,所以对我的描述进行任何更正都会有所帮助。

4

1 回答 1

4

使用双括号代替单括号

v[[i]]   instead of v[i]

看看这两者之间的区别:

v[[i]] (3)  
v[i] (3) # error

单括号返回一个列表,其内容是一个函数
双括号返回函数。

于 2013-10-10T13:13:17.633 回答