根据字符串长度过滤行名称

时间:2016-03-09 20:37:20

标签: r

我想过滤包含长度超过35且短于10的rownames的行。 我在查看nchar函数。

                                    79_CGTACG.collapsed.gz 80_ACAGTG.collapsed.gz
CACCCGCACGTATAGACGGACA                                   0                      0
GTGCTGATGTCCTTGGCAGGCTTCGGCCGTCCGGC                      0                      0
CGTGGAACCTG                                              0                      0
TAATGGTCATTAG                                            2                      1
GGCGATGCGGGATGAACCGAAC                                   0                      0
AAGGATGT                                                 0                      0

1 个答案:

答案 0 :(得分:7)

我认为您使用nchar()的想法很好。这可以应用于rownames()并与逻辑上的数据框结合使用:

df1[nchar(rownames(df1)) > 35 | nchar(rownames(df1)) < 10,]
#         X79_CGTACG.collapsed.gz X80_ACAGTG.collapsed.gz
#AAGGATGT                       0                       0

数据

 df1 <- structure(list(X79_CGTACG.collapsed.gz = c(0L, 0L, 0L, 2L, 0L, 
0L), X80_ACAGTG.collapsed.gz = c(0L, 0L, 0L, 1L, 0L, 0L)), 
 .Names = c("X79_CGTACG.collapsed.gz", "X80_ACAGTG.collapsed.gz"), 
  class = "data.frame", row.names = c("CACCCGCACGTATAGACGGACA", 
  "GTGCTGATGTCCTTGGCAGGCTTCGGCCGTCCGGC", "CGTGGAACCTG", "TAATGGTCATTAG", 
 "GGCGATGCGGGATGAACCGAAC", "AAGGATGT"))