将NA和colapse列移除到一列R

时间:2017-03-02 12:35:44

标签: r matrix dataframe

我有以下矩阵:

      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)],我最终得到一个大行

1 个答案:

答案 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=""))