我在R中使用了robust.arima包,当我在脚本中调用它时,它工作正常。但是,我想组织我的文件,因此在函数中调用robust arima。这里突然找不到变量。让我给予个例子
# Works fine
ts_list <- rnorm(100)
arima.rob(ts_list~1)
# Breaks down
get_rob_estimate <- function(x){
out <- arima.rob(x~1)
return(out)
ts_list <- rnorm(100)
get_rob_estimate(ts_list)
Error in eval(formula[[2]]) : object 'x' not found
有人知道这是怎么回事吗?我认为这个问题看起来和R : Pass argument to glm inside an R function很相似,但我仍然想不通,我很好奇R是如何处理这些函数的?
- 编辑 *
好吧,基本的选择,我现在明白了,但我不明白为什么它有效。如果我有
check_func <- function(ind_ts){
out <- substitute(arima.rob(ind_ts~1))
return(eval(out))
}
analyze_ts <- function(){
df <- mvrnorm(100, mu=c(0,0,0), Sigma=diag(c(1,1,1)))
p <- list()
for (i in ncol(df)){
sel <- df[,i]
check_func(sel)
p <- append(p, sel)
}
return(p)
}
analyze_ts()
然后得到错误Error in eval(formula[[2]]) : object 'sel' not found
它是怎么工作的,这里发生了什么,我只是想让我的列表,在我的函数中,作为一个列表,应该不是很难,对吧,不管它经过多少个函数?
1条答案
按热度按时间rsaldnfx1#
使用
substitute()
编辑
你可以这样正确地编写Arima Package 器:
更好地使用
lapply