找回密码
 注册
查看: 5780|回复: 2

关于如何做R循环中套用条件,求助

[复制链接]
发表于 2011-7-26 03:39:45 | 显示全部楼层 |阅读模式
问题是:data X有6000行,4列,条件是从X[1,4]开始扫面,对(i in 2:6000)做X[i,4]-X[1,4],如果结果大于20480,则停止,返回X[i,2],并以下一行(i+1)为新的起点,重复进行.我自己写的程序如下:
for (i in 2:6000){
diff=(X[i,4]-X[1,4])
while(diff<20480){i=i+1}
snp=X[i,2]
}

这里只考虑了第一次的循环,没有考虑新的起点。即使是这样程序好像也是不对的,改了好多次了,急。
虚心请教版上各位大侠。在此谢过~
回复

使用道具 举报

发表于 2011-7-26 09:08:23 | 显示全部楼层
本帖最后由 handsome 于 2011-7-26 09:14 编辑

这种用双层循环遍历,条件控制内层循环
for(i in 1:5999){
    for (j in i+1:6000){
diff=(X[j,4]-X[i,4])   
if(diff>20480 ){
    做你的控制
    }
}
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-26 23:41:29 | 显示全部楼层
handsome 发表于 2011-7-26 09:08
这种用双层循环遍历,条件控制内层循环
for(i in 1:5999){
    for (j in i+1:6000){

1.如果这样子第一遍i=1, j从1开始扫描到5得出我想要结果,然后第二遍i=2对么?但是我想要的是 i 变成6,从6开始扫描。是不是应该这样子
i=j+1
for (j in i+1:6000)
{if(条件) 输出该值
}

2. 另外还有个问题就是想输出j所对应的值的话是output X[j,2] 么?能给这个附个名字嘛?比如snpj=X[j,2]

万分感谢你的回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 21:52 , Processed in 0.026670 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表