我编写了一个函数,用于在长 DNA 序列中查找子序列的索引。当我的较长 DNA 序列 < 约 4000 个字符时,它会起作用。但是,当我尝试将相同的函数应用于更长的序列时,控制台给了我一个 + 而不是 >... 这让我相信这是字符串的长度问题。
例如:当较长的序列是:“GATATATGCATATACTT”,子序列是:“ATAT”时,我得到索引“1、3、9”(基于0)
dnaMatch <- function(dna, sequence) {
ret <- list()
k <- str_length(sequence)
c <- str_length(dna) - k
for(i in 1:(c+1)) {
ret[i] = str_sub(dna, i, i+k-1)
}
ret <- unlist(ret)
TFret <- lapply (ret, identical, sequence)
TFret <- which(unlist(TFret), arr.ind = TRUE) -1
print(TFret)
}
基本上,我的问题是......有没有办法解决字符串类中的字符限制?
最佳答案
我可以复制 nrussell 的示例,但这正确分配 x<-paste0(rep("abcdef",1000),collapse="")
-- 一个潜在的解决方法是将字符串写入 .txt
文件并阅读 .txt
直接将文件导入R:
test.txt 是一个 6,000 个字符的字符串。
`test<-read.table('test.txt',stringsAsFactors = FALSE)
length(class(test[1,1]))
[1] 1
class(test[1,1])
[1] "character"
nchar(test[1,1])
[1] 6000`
关于r - 在 R 中存储长字符串(DNA 序列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399710/