【问题标题】:Error: evaluation nested too deeply: infinite recursion / options(expressions=)? in R3.3.2错误:评估嵌套太深:无限递归/选项(表达式=)?在 R3.3.2 中
【发布时间】:2018-03-19 16:57:51
【问题描述】:

我正在尝试使用一个函数来读取不同的模型。在没有函数的情况下使用下面的代码是可行的。当我使用该函数并调用它时,我会得到错误

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?

谁能告诉我为什么?

x=rnorm(1000)+sin(c(1:1000)/100)#random data+ sinus superimposed

plot <- function(model){
    par(mfrow=c(2,2))# plot window settings
    plot(model)
    lines(filter(model,rep(1/30,30)),col='red')
    plot(filter(model,rep(1/30,30)))
    plot(model-filter(model,rep(1/30,30)))

    # variances of variable, long term variability and short term variability
    var(model)
    var(filter(model, rep(1/30,30)),na.rm=T)
    var(model-filter(model, rep(1/30,30)),na.rm=T)

}

plot(x)

【问题讨论】:

    标签: r nested infinite-recursion


    【解决方案1】:

    问题是你定义的plot函数也是在它的体内被调用的,所以这里有一个无限递归。

    将您的 plot 函数重命名为其他名称,例如 myplot,您应该没问题。

    【讨论】:

    • 你知道为什么,现在它工作了,它只会打印最后一个 var() 命令吗?
    • 该函数只返回其主体中的最后一个值。 var 函数不打印任何东西,它返回一个值,函数中的最后一个var 是整个绘图函数的结果。打印出来的原因仅仅是因为控制台总是打印你调用的函数的结果(好吧,除非它们被包装在 invisible 函数中)。
    • 如果要打印var的结果,可以使用printcat
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多