我有两个.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有点新,所以对我的描述进行任何更正都会有所帮助。
答案 0 :(得分:4)
使用双括号而不是单括号
v[[i]] instead of v[i]
看看这两者之间的区别:
v[[i]] (3)
v[i] (3) # error
单括号返回一个列表,其内容为函数
双括号返回函数。