2

当在 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))

4

2 回答 2

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)将是正确使用的函数。

于 2013-04-26T19:57:52.870 回答
0

您可以使用foreach并输出 a来做到这一点dataframe

foreach(i = 1:4, .combine = rbind) %do% {
  if (i == 3) {
    data.frame(i = numeric())
  } else {
    data.frame(i=i)
  }
}
于 2019-12-23T04:46:29.123 回答