这种问题已被多次询问,但根据我的需要,我无法得到答案。
我知道在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 <- "AGCTG"
并且如果我使用substring(x, seq(1, nchar(x)-1, 3), seq(3, nchar(x), 3))
,我不会得到最后两个字符子串。我得到了
"AGC" ""
但是我有兴趣得到像
这样的东西"AGC" "TG"
或者如果我有x <- "AGCT"
并且一次分割3个字符,我想得到一些像
"AGC" "T"`
我简短,如何将一个字符串拆分成所需长度(2,3,4,5 ... n)的子串,并保留那些小于所需长度的剩余字符。
答案 0 :(得分: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"
答案 1 :(得分:1)
通过 zx8754 回答。但不幸的是,在一些人将问题标记为重复后,他删除了答案。如果他想发布这个作为答案,我会删除我的帖子。
x <- "AGCGGCCAGCTGCCTGAA"
mylen <- 5
ss <- strsplit(x, "")[[1]]
sapply(split(ss, ceiling(seq_along(ss)/mylen)), paste, collapse = "")