【问题标题】:select strings bigger than tresh选择大于 tresh 的字符串
【发布时间】:2019-04-23 21:08:38
【问题描述】:

我有一个这样的字符串集

genome
 A DNAStringSet instance of length x
          width seq                                                               
    [1]     1003 GAACAGCATGAATGTTAAAACTGA...AGGTTTTCAGAAAAAGCAGAAGA 
    [2]     150 TATATATATATAGTCAATTCGAGG...CTATTCCAGAGTTTCCTTGCAAA 
    [3]     1619 ATAGACATACACACAAATATTTTT...TATTTATACATATATATATATAT 
    [4]     359 TCACCAGTGGCAGCCGCGGCTACA...GTACAACGACCCTGATGACTCCG 

我只会选择大于 tresh = 1000 的字符串 我试过了

genome[filter(width(genome) >=1000]

但是这并没有给出正确的解决方案。 我会期待这样的输出:

genome
  A DNAStringSet instance of length x
           width seq                                                               
     [1]     1003 GAACAGCATGAATGTTAAAACTGA...AGGTTTTCAGAAAAAGCAGAAGA  
     [3]     1619 ATAGACATACACACAAATATTTTT...TATTTATACATATATATATATAT 

任何人都可以向我推荐一个工作脚本吗?

【问题讨论】:

  • 你能给我们一个dput的数据吗?或dput(head(data))。无论如何,我认为你可以做genome[ genome$width >= 1000]
  • 这个解决方案不起作用,因为我使用了 DNAstringset

标签: r substring


【解决方案1】:

在您的情况下,您需要 nchar 来计算字符串中的字符数。 所以试试这个:

genome[nchar(genome$seq) >= 1000, ]

如果宽度是数字字符,您也可以像这样选择正确的条目:

genome[genome$width >= 1000, ]

在您的问题中,您使用了 dpylr 包中的 filter 函数:可以这样做:

library(dplyr)
filter(genome, width >= 1000)

filter(genome, nchar(seq) >= 1000)

【讨论】:

  • 我认为它是一个字符串集,所以不可能使用dplyr。事实上,它提醒我这个错误 UseMethod("filter_") 中的错误:没有适用于 'filter_' 的方法应用于类“c('DNAStringSet', 'XStringSet', 'XRawList', 'XVectorList', 'List' , '向量', 'list_OR_List', '注释')"
  • 好的,其他方法呢。如果它们不起作用,请发布输出dput(head(genome))
  • 请在您的问题中发布输出,而不是作为评论
  • 对不起,我用这个脚本解决了这个问题!基因组[宽度(基因组)> = 1000,]
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多