【问题标题】:skipping NULL output in apply在应用中跳过 NULL 输出
【发布时间】:2013-04-26 19:17:30
【问题描述】:

当在 R 中使用 apply 时,有没有办法让它跳过 NULL 的向量元素,这样当 f(x2,y2) 未定义时 apply(x,1,f,y) 返回

c(f(x1,y1),f(x1,y2),f(x2,y2))
而不是
c(f(x1,y1),f(x1,y2),NULL,f(x2,y2))?

【问题讨论】:

  • 我不完全理解你的例子,但你应该能够做到这一点:将你的输出放在一个变量中,比如z,然后查看z[!is.null(z)]

标签: r null apply


【解决方案1】:

afaik,不是来自应用循环内部。

你的两个选择是:

  1. 过滤 x 和 y。这可以在调用 apply 之前完成,或者在实际的 apply 调用中完成。例如:apply(x[index.x], 1, f, y[index.y])
  2. 在获得结果后对其进行过滤。例如

    res <- apply(x,1,f,y)
    res <- res[!is.na(res)]

编辑:

如果使用后一个选项,根据函数的输出,is.null(res)is.na(res) 将是正确使用的函数。

【讨论】:

  • 我事先不知道该函数针对哪些索引返回空值,因此首先过滤 x 和 y 在这里不适用。我认为您的第二个选项对我有用。
【解决方案2】:

您可以使用foreach 并输出dataframe

foreach(i = 1:4, .combine = rbind) %do% {
  if (i == 3) {
    data.frame(i = numeric())
  } else {
    data.frame(i=i)
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多