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

私の知る限り、適用ループ内からではありません。

あなたの2つのオプションは次のとおりです。

  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して出力することができます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 に答える