在apply中跳过NULL输出

时间:2013-04-26 19:17:31

标签: r null apply

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

2 个答案:

答案 0 :(得分:1)

afaik,而不是来自apply循环内部。

您的两个选择是:

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

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

  3. 编辑:

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

答案 1 :(得分:0)

您可以使用foreach并输出dataframe

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