繁体   English   中英

翻译函数:“错误:序列不是字符向量”

[英]Translate function: "error:sequence is not a vector of chars"

我正在努力使用翻译功能:

我有一个序列矩阵,我无法弄清楚为什么翻译功能不起作用。

这是我的脚本:

 head(myseq)
     [,1]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
[1,] "CAATTAAGATGCAGTTACTTCGCTGTTTTTCAATATTTTCTGTTATTGCTAGCGTTTTAGCAGCTGGAGAAGTCCAGTTGGTTGAATCCGGTGGCGGGTTGGTTCAACCTGGCCGTTCCCTGCGCCTTTCTTGTGCCGCTTCAGGCTTTACCTTCGACGATTATGCCATGCATTGGGTACGCCAAGCTCCGGGCAAAGGTCTGGAATGGGTGAGTGCCATTACCTGGAATAGCGGCCACATTGACTATGCGGATAGCGTCGAAGGGCGCTTTACCATTAGCCGTGATAACGCGAAGAACAGCCTCTATCTGGACATGAACAGCTTACGTGCGGAAGATACCGCAGTGTACTATTGCGCTAAGGTCAGCTATCTGAGTACTGCCAGTTCCCTGGATTATTGGGGTCAAGGAACCCTGGTGACCGTGTCAAGCGGCGGAGGCGGTTCTGGTGGTGGAGGCAGTBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
[2,] "CAATTAAGATGCAGTTACTTCGCTGTTTTTCAATATTTTCTGTTATTGCTAGCGTTTTAGCAGCTGGAGAAGTCCAGTTGGTTGAATCCGGTGGCGGGTTGGTTCAACCTGGCCGTTCCCTGCGCCTTTCTTGTGCCGCTTCAGGCTTTACCTTCGACGATTATGCCATGCATTGGGTACGCCAAGCTCCGGGCAAAGGTCTGGAATGGGTGTCTGCGGCTAGTTGGAGTGGTGGCCACATCGATTATGCCGATAGCGTCGAAGGGCGCTTTACCATTAGCCGTGATAACGCGAAGAACAGCCTCTATCTGGACATGAACAGCTTACGTGCGGAAGATACCGCAGTGTACTATTGCGCTAAGGTCAGCTATCTGAGTACTGCCAGTTCCCTGGATTATTGGGGTCAAGGAACCCTGGTGACCGTGTCAAGCGGCGGAGGCGGTTCTGGTGGTGGAGGCAGTBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

translate(myseq[1,],frame=2,sens=F)

Error in s2n(seq, levels = s2c("tcag")) :sequence is not a vector of chars

我检查了我的参数:

class(myseq[1,])

[1] "character"

is.vector(myseq[1,])

[1] TRUE

所以我认为我错过了一些东西,但我不知道是什么。

解决方案:

如果您使用的是seqinr::translate那么您可以尝试用s2c包裹您的 DNA 字符串。

myString <- "AAACCCGGGTTT"
library(seqinr)

# Without s2c
translate(myString)
Error in s2n(seq, levels = s2c("tcag")) : 
  sequence is not a vector of chars

# With s2c
translate(s2c(myString))
[1] "K" "P" "G" "F"

解释:

translate()需要的字符向量是"A" "A" "A" "C" "C" "C" "G" "G" "G" "T" "T" "T"而不是"AAACCCGGGTTT" .
您可以使用strsplit()生成这样的向量:

strsplit(myString, "")
[[1]]
 [1] "A" "A" "A" "C" "C" "C" "G" "G" "G" "T" "T" "T"

all(strsplit(myString, "")[[1]] == s2c(myString))
[1] TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM