R 将一个矩阵分为两个矩阵,基于;不适用;
现在,我必须根据带有“NA”值的列将此矩阵拆分为两个矩阵,一个包含所有“NA”,另一个不包含“NA” 输入:R 将一个矩阵分为两个矩阵,基于;不适用;,r,matrix,R,Matrix,现在,我必须根据带有“NA”值的列将此矩阵拆分为两个矩阵,一个包含所有“NA”,另一个不包含“NA” 输入: >k a u v [1,] "10" "mature" "MIMAT0000062" [2,] "20" "stemloop" "NA" [3,] "40" "mature_2" "MIMAT0000043" 输出应该是 >k1 a u v [1,] "10" "mature" "MIM
>k
a u v
[1,] "10" "mature" "MIMAT0000062"
[2,] "20" "stemloop" "NA"
[3,] "40" "mature_2" "MIMAT0000043"
输出应该是
>k1
a u v
[1,] "10" "mature" "MIMAT0000062"
[2,] "40" "mature_2" "MIMAT0000043"
>k2
a u v
[1,] "20" "stemloop" "NA"
是否有任何函数可以执行此操作?您可以按如下方式拆分矩阵“k”:
k1 <- k[which(rowSums(is.na(k))==0),]
k2 <- k[which(rowSums(is.na(k))>0),]
k1真正的NA没有任何引号,使用字符“NA”
对您没有多大帮助。如果其中一个NA位于“u”列的第一行怎么办?还是只针对“v”列?在这种情况下,lappy(split(seq_len(nrow(k1)),is.na(k1[,3])),function(i)k1[i,drop=FALSE])
(假设您有真正的NAs)“有什么函数可以做吗?”是的,有:is.na()
@akrun我想就是split(as.data.frame(k),is.na(k[,3]))
如果OP适合在list@DavidArenburg是的,它会起作用的。我只是想把它作为一个矩阵(尽管从输入数据来看这是不必要的),这样效果很好。但当我想要基于一个特定列进行拆分时,它失败了。因为它检查任何一个NA(即使任何其他列是NA,它也会拆分)。在这种情况下,k1