我知道我可以用这种方式合并三个向量:
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