相关疑难解决方法(0)

如何在R中有效地实现合并

背景

几种SQL语言(我主要使用postgreSQL)有一个名为coalesce的函数,它返回每行的第一个非空列元素.当表中包含大量NULL元素时,这可以非常有效地使用.

我在R中的许多场景中都遇到过这种情况,当处理不太结构化的数据时,其中包含很多NA.

我自己做了一个天真的实现,但它的速度非常慢.

coalesce <- function(...) {
  apply(cbind(...), 1, function(x) {
          x[which(!is.na(x))[1]]
        })
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

coalesce在R中有没有有效的方法?

r coalesce

37
推荐指数
6
解决办法
2万
查看次数

标签 统计

coalesce ×1

r ×1