我是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, 贝拉
答案 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")
}