2016-05-23 68 views
0

我正在讀取bins.txt並將其數據保存在「數據」中。我試圖打印它,它正在正確打印。將數據從IF循環存儲到向量中

data <- read.csv("bins.txt", header = FALSE) 
for (n in 1:24060) 
    { 
    j=(data[n,]) 
    for (i in 1:20) 
    { 
     m=(i-1)*80 
     n=(i*80)-1 
     if(m<j && j<n) 
     {   
     print (i) 
     } 


    } 
    } 

我想不打印(我),但我的值存儲在某些載體,並打印在循環外,並傳遞它

obs="vector" 

有點像這個

+0

你能提供這代表您的問題,相當於預期輸出的樣本數據? –

+0

你需要在循環之前定義一個向量並賦值給它,但你幾乎肯定不需要循環。提示:「if」不是矢量化的,而是「ifelse」。如果你[解釋你的問題](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610),你可能會得到一個完整的答案。 – alistaire

回答

0

不知道你的bins.txt是什麼。因爲我真的不喜歡嵌套循環,這裏有一個建議:

(I)定義20對分鐘(或米)和最大(j)的值的狀態檢查:

m <- lapply(1:20, function(x) (x-1)*80) 
n <- lapply(1:20, function(x) (x*80)-1) 

(二)收益基於針對基於m的20個組合和n個數據的20個向量的列表:

lapply(1:20, function(x) dat[m[[x]] < dat & dat < n[[x]]]) 

假設你的數據是

dat <- seq(0, 1000, length.out=50) 

返回前六個載體是:

[[1]] 
[1] 20.40816 40.81633 61.22449 

[[2]] 
[1] 81.63265 102.04082 122.44898 142.85714 

[[3]] 
[1] 163.2653 183.6735 204.0816 224.4898 

[[4]] 
[1] 244.8980 265.3061 285.7143 306.1224 

[[5]] 
[1] 326.5306 346.9388 367.3469 387.7551 

[[6]] 
[1] 408.1633 428.5714 448.9796 469.3878 
相關問題