Skip to main content
 首页 » 编程设计

r中删除 rownames() 与 R 不适用的矩阵行

2024年12月31日51小虾米

我的矩阵如下所示:

     [,1] 
A    "2012"  
B    "2013" 
C    "2012" 
D    "2013" 
NA1  "2012"  
NA2  "2013" 
NA3  "2013" 
NA4  "2014" 

如何删除名称为 NA1、NA2.... 的最后一行?

所以最终的结果是这样的:

        [,1] 
  A    "2012"  
  B    "2013" 
  C    "2012" 
  D    "2013" 

编辑:我尝试过这样做......

ifelse(nchar(rownames(Matrx))<2,Matrx,!(nchar(rownames(Matrx))>2)) 

请您参考如下方法:

您可以使用正则表达式和 grepl 来删除它们。

> M <- matrix(c("2012","2013","2012","2013","2012","2013","2013","2014")) 
> rownames(M) <- c('A', 'B', 'C', 'D', 'NA1', 'NA2', 'NA3', 'NA4') 
> M 
##     [,1]   
## A   "2012" 
## B   "2013" 
## C   "2012" 
## D   "2013" 
## NA1 "2012" 
## NA2 "2013" 
## NA3 "2013" 
## NA4 "2014" 
 
> as.matrix(M[!grepl('NA', rownames(M)), ]) 
##   [,1]   
## A "2012" 
## B "2013" 
## C "2012" 
## D "2013"