【问题标题】:Substrings of whole string in RR中整个字符串的子字符串
【发布时间】:2016-02-25 11:17:00
【问题描述】:

这类问题已经被问过很多次了,但我无法根据自己的需要得到答案。

我知道在R 中拆分字符串的一些方法。如果我有一个字符串x <- "AGCAGT",并且想将字符串拆分为三个字符。我会这样做

substring(x, seq(1, nchar(x)-1, 3), seq(3, nchar(x), 3))

和两个字符的字符串通过

快得多
split <- strsplit(x, "")[[1]]
substrg <- paste0(split[c(TRUE, FALSE)], split[c(FALSE, TRUE)])

作为R的新用户,我觉得很难按照自己的要求拆分字符串。如果x &lt;- "AGCTG" 并且如果我使用substring(x, seq(1, nchar(x)-1, 3), seq(3, nchar(x), 3)),我不会得到最后两个字符的子字符串。我明白了

"AGC" ""

但是我有兴趣得到类似的东西

"AGC" "TG"

或者如果我有 x &lt;- "AGCT" 并一次拆分 3 个字符,我想得到类似的东西

"AGC" "T"`

简而言之,如何将字符串拆分为所需长度(2,3,4,5...n)的子字符串,并保留那些小于所需长度的剩余字符。

【问题讨论】:

  • 查看seq(3, nchar(x), 3)的输出,这是子字符串的结尾,你就会明白问题所在。
  • 看来there is an answer 关注的是完全相同的问题。
  • 标记的重复并不能解决我的问题。 zx8754的回答,不过后来删了好像解决了我的问题
  • @zx8754 请考虑取消删除该帖子。根据 OP 的担忧,我将重新打开该帖子。
  • @RichardScriven 请检查上面我想要的输出。考虑字符串AGCGGCCAGCT 和三个字符拆分。

标签: r substring


【解决方案1】:

这是一个通过几个简单步骤的可能解决方案。

x <- "AGCGGCCAGCTGCCTGAA"

# desired length
mylen = 5

# start indices
start <- seq(1, nchar(x), mylen)

# end indicies
end <- pmin(start + mylen - 1, nchar(x))

substring(x, start, end)
[1] "AGCGG" "CCAGC" "TGCCT" "GAA" 

【讨论】:

    【解决方案2】:

    zx8754 回答。但不幸的是,在有人将问题标记为重复后,他删除了答案。如果他想发布这个作为答案,我会删除我的帖子。

    x <- "AGCGGCCAGCTGCCTGAA"
    mylen <- 5 
    ss <- strsplit(x, "")[[1]]
    sapply(split(ss, ceiling(seq_along(ss)/mylen)), paste, collapse = "")
    

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2018-05-30
      • 1970-01-01
      • 2021-11-26
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多