バックグラウンド
いくつかの SQL 言語 (主に postgreSQL を使用) には、各行の最初の非 null 列要素を返す、coalesce という関数があります。これは、テーブルに多くのNULL
要素が含まれている場合に非常に効率的に使用できます。
多くのNAが含まれているあまり構造化されていないデータを扱う場合にも、Rの多くのシナリオでこれに遭遇します。
私は単純な実装を自分で作成しましたが、途方もなく遅いです。
coalesce <- function(...) {
apply(cbind(...), 1, function(x) {
x[which(!is.na(x))[1]]
})
}
例
a <- c(1, 2, NA, 4, NA)
b <- c(NA, NA, NA, 5, 6)
c <- c(7, 8, NA, 9, 10)
coalesce(a,b,c)
# [1] 1 2 NA 4 6
質問
coalesce
Rで実装する効率的な方法はありますか?