我有以下矩阵:
V1 V2 V3 V4 V4
[1,] "a" "j" "d" "e" NA
[2,] "a" "b" "d" "e" NA
[3,] "a" "j" "g" "f" NA
[4,] "a" "g" "f" NA NA
我想得到:
V1 V2
[1,] "ajde"
[2,] "abde"
[3,] "ajgf"
[4,] "agf"
我知道如何使用matrix(do.call(paste0, as.data.frame(M)))
将矩阵缩减为一列,以及如何使用m[!is.na(m[i,])]
逐行删除NA。我只是不知道如何将两者结合在一起,因为任何时候我尝试在整个矩阵上使用m [!is.na(m)],我最终得到一个大行
答案 0 :(得分:2)
我们可以使用gsub
来删除NA
V1 <- gsub("NA+", "", do.call(paste0, as.data.frame(M)))
V1
#[1] "ajde" "abde" "ajgf" "agf"
matrix(V1, ncol=1)
或者我们可以使用apply
apply(M, 1, function(x) paste(x[!is.na(x)], collapse=""))