我如何才能停止一个while循环并在上一个循环开始的地方开始另一个while循环

时间:2019-05-06 16:16:16

标签: r loops bioinformatics break continue

我试图通过跳过1个字母并将它们分组为三个字母直到在数据帧中找到“ tac”,来对列表中的字母进行计数,然后我想通过跳过3个字母直到我将其余的字母分组为三个找到“ att”

我想说的例子:

"agttacgtaattatgat"

它应该做:

agt,gtt,tta,tac  stop, gta,att  stop ,atg,tga,gat

(数据框的名称为 agen

我的代码:

 y=c() 
x=1 
while(x<853){ 
  x=x+1
 rt<-paste(agen[x],agen[x+1],agen[x+2])
  y=c(y,rt)
  ff<-data.frame(y)
  if(ff=="t a c"){break}
}

ay=c()
while(x<853){                            
  x=x+3
  art<-paste(agen[x],agen[x+1],agen[x+2])
  ay=c(ay,art)
  aff<-data.frame(ay)
  if(aff=="a t t"){break}
}

第一个运行正常,但是第二个没有损坏。

代码中会有很多停止和开始的地方,所以您能帮我写一个可以完成此工作的循环吗?

1 个答案:

答案 0 :(得分:0)

我想我大概只知道您需要什么,但这是一个代码示例,也许可以满足您的需要。我使用了您指定的示例,并使用了一个以DNA碱基为元素的载体,而不是一个“数据框”。我也改变了一些风格。

super()

如果您更多地研究DNA序列,则可能需要使用更专业的R包,例如Biostrings