如何将合并应用于矩阵

How to apply coalesce to a matrix

我知道我可以用这种方式合并三个向量:

y <- c(1, NA, NA, NA, 5)
z <- c(NA, NA, 3, 4, 6)
k <- c(NA, 1, NA, NA, 8)
coalesce(y,z,k)

然而,在实际数据中,我只得到整个数据集,如:

d <- rbind(y,z,k)

在现实生活中,每次 d 都有不同的行长度(有时 3 行,有时 4 行),这意味着我们不能只写:

coalesce(d[1,],d[2,],d[3,])

我想过split函数:

split(t(d),rep(1:nrow(d),each = ncol(d)))

并得到:

$`1`
[1]  1 NA NA NA  5

$`2`
[1] NA NA  3  4  6

$`3`
[1] NA  1 NA NA  8

但是 split 函数的结果不能应用于合并函数。

有没有办法实现我的想法?

您可以在 do.call() 内使用它,即

do.call(coalesce, as.data.frame(t(d)))
#[1] 1 1 3 4 5