r - 在 R 中存储长字符串(DNA 序列)

标签 r string

我编写了一个函数,用于在长 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/

相关文章:

r - 从 nlme 对象中提取随机公式

r - 数据列表到数据矩阵 matlab/R

java - 如何在同一行打印 2 个 for 循环的结果

java - JAXB 问题,Marshal,无法编码类型 "java.lang.String"

java - 跳过一个单词,打印下一个单词

c++ - 字符串声明

r - 如何防止小数位数::百分比加小数

r - 如何在 ggplot2 中绘制 Gamma 分布

r - 样本函数 R 不产生均匀分布的样本

c# - 复制 C# DataTable 并将所有值转换为字符串