使用函数作为参数时“找不到函数”

时间:2013-10-10 13:06:49

标签: r pointers function-pointers

我有两个.R文件,plotDataSet(..)和plotAllDataSets()。 plotDataSet(..)调用curve(..)(在R图形库中),而plotAllDataSets()调用plotDataSet(..)。 plotDataSet(..)将函数作为参数,并将其传递给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有点新,所以对我的描述进行任何更正都会有所帮助。

1 个答案:

答案 0 :(得分:4)

使用双括号而不是单括号

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

看看这两者之间的区别:

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

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