【问题标题】:Issues with R's plot: expr did not evaluate to an object of length nR 的绘图问题:expr 未计算为长度为 n 的对象
【发布时间】:2019-06-01 18:01:40
【问题描述】:

我想在 R 中绘制这个函数:

我的代码:

   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, from = from, to = to, xlim = xlim, ylab = ylab, : 'expr' 未计算为长度为 'n' 的对象“

【问题讨论】:

  • 这个fires_2009_2015$Wi 长什么样子?
  • 你不能写情节(lambda)
  • j=max(1,i+m) 我不确定这是否会评估 max 必须得到一个向量才能工作 j=max(c(1,i+m) )
  • @DimitriosZacharatos:max 可以处理多个参数。 Paula 的一个问题是它会给出一个单一的答案,因为i 将是一个向量,所以这是错误的。 pmax 会解决这个问题,但在她的函数后面还有其他向量问题。
  • @user2554330 你是对的

标签: r


【解决方案1】:

问题是plot(lambda) 将使用i 的向量参数调用函数lambda(),而您对lambda() 的定义将无法正确处理。由于您的 for 循环,让它有效地处理向量参数看起来有点棘手,但总有蛮力方法:

lambda <- Vectorize(lambda)

在这之后你的plot(lambda) 应该做点什么。这可能不是你想要的,因为它默认为 0 到 1 的范围,但你可以这样做

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

更改默认范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-30
    • 2021-01-30
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2011-02-28
    • 2013-06-15
    • 2020-09-09
    相关资源
    最近更新 更多