R的图的问题:expr的结果为长度为n的对象

时间:2019-06-01 18:01:40

标签: r

我想在R中绘制此函数:

enter image description here

我的代码:

   lambda <- function (i) {
    m <- 50
    j=max(1,i+m)
    n <- 27090
    ((2*m+1)^(-1))*
    for (i in j:min(n,i+m)) {
    sum (fires_2009_2015$Wi)[j]
    }
    }
    plot(lambda)

但是,当我运行代码时,出现错误:

  

“曲线错误(expr = x,从=从,到=到,xlim = xlim,ylab = ylab ,:     'expr'不求值对象'n'“

1 个答案:

答案 0 :(得分:0)

问题是plot(lambda)将使用带有lambda()的向量参数的函数i,而您对lambda()的定义将无法正确处理。由于存在for循环,因此要使其有效地处理矢量参数看起来有些棘手,但始终有蛮力方法:

lambda <- Vectorize(lambda)

此后,您的plot(lambda)应该做些事情。它可能不是您想要的,因为它的默认范围是0到1,但是您可以执行以下操作

plot(lambda, from = 0, to = 20)

更改默认范围。