This question already has answers here:
Remove all rows where length of string is more than n

(4 个回答)


3年前关闭。




我想过滤包含长于 35 且短于 10 的行名的行。
我在看 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

最佳答案

我认为您使用 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"))

关于r - 根据字符串长度过滤行名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35902056/

10-11 07:49