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つのオプションは次のとおりです。
apply(x[index.x], 1, f, y[index.y])
取得後に結果をフィルタリングします。例えば
res <- apply(x,1,f,y)
res <- res[!is.na(res)]
後者のオプションを使用する場合、関数の出力が何であるかに応じて、使用する正しい関数は is.null(res)
またはになります。is.na(res)
を使用foreach
して出力することができますdataframe
:
foreach(i = 1:4, .combine = rbind) %do% {
if (i == 3) {
data.frame(i = numeric())
} else {
data.frame(i=i)
}
}