Как эффективно объединить в R

Фон

Некоторые языки SQL (я в основном использую postgreSQL) имеют функцию coalesce, которая возвращает первый элемент столбца, не равный NULL, для каждой строки. Это может быть очень эффективно использовать, когда в таблицах многоNULL элементы в них.

Я сталкиваюсь с этим во многих сценариях в R, а также при работе с не очень структурированными данными, в которых много NA.

Я сделал наивную реализацию сам, но это смехотворно медленно.

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?

Ответы на вопрос(2)

Ваш ответ на вопрос