如何将dotPlot(seqinr)函数应用于含有蛋白质序列的载体中的每个可能的成对组合

时间:2017-03-11 14:46:59

标签: r loops for-loop plot character

我是R新手,我真的很感激一些帮助。 我想将dotPlot(seqinr)功能应用于来自含有3种蛋白质序列的载体的两种蛋白质序列的每种组合。这意味着我想最终得到3个dotPlot图表。 我试着用于循环:

#this is the vector containing 3 protein sequences. I turned each sequence to string to get 3 character vector:                      
seqs<-c(c2s(lepraeseq),c2s(ulceransseq),c2s(protseq))

#the loop:
for(i in 1:(length(seqs)-1)){
for(j in (i+1):length(seqs)){
print(dotPlot(as.character(i),as.character(j)))}}

#the outcome:
NULL
NULL
NULL

the plot is empty and without the protein names

显然它错了,我正努力找到正确的方法。 i和j是整数,我希望它们是包含序列作为字符的向量,我只是无法弄清楚如何。

如果有人有其他方式,我会很高兴收到它。 谢谢&#39; S, 贝拉

1 个答案:

答案 0 :(得分:0)

我无法访问lepraeseq,ulceransseq等中的数据,但这应该有效。您需要使用combn创建一个包含所有可能组合的索引对象。

使用此索引,您可以在循环中生成绘图。我看到你在窗户上。我添加了一行来保存您的驱动器上的图。

library(seqinr)
seqs<-c("lepraeseq","ulceransseq","protseq")

comb <-combn(length(seqs),2) #get all possible pairwise combinations

for (i in 1:ncol(comb)){
dotPlot(s2c(seqs[comb[1,i]]),s2c(seqs[comb[2,i]]),
 xlab=seqs[comb[1,i]],ylab=seqs[comb[2,i]])
savePlot(filename = paste0("c:/temp/",paste0(seqs[comb[1,i]],"-",seqs[comb[2,i]]),".png"), 
 type ="png")
}

enter image description here