2015-05-05 22 views
2

我希望將由我的for循環生成的結果傳遞到一個data.frame。因此,我創建了一個空data.frame這樣的:讓一個for循環將所有結果添加到現有數據。框架

result <- data.frame(matrix(ncol = 8, nrow = 1)) 

,然後匹配列的名稱與data.frame的名字,這是會被搜索:

names(result) <- names(example) 

我換循環應遍歷值列表並檢查輸入data.frame是否符合條件的值,然後將該值的整行添加到我的空值中data.frame

lpos 
[1] 5 

for(i in lpos){ 
indx <- sapply(example[,4], function(x) (x > minpos[i]) & (x < maxpos[i])) 
newrow <- example[indx,] 
result = rbind(result, newrow) 
} 

所以我的預期輸出是我得到了data.frame,包含所有結果。但似乎這個代碼每次都會覆蓋添加的行,而我剛剛獲得了保存在我的data.frame中的最後一次迭代。

我能做些什麼來防止這段代碼覆蓋現有的結果? 所以我的數據是這樣的:

> head(example[1:4,-9]) 
     V1  V2 V3 V4 V5 V6 V7 V8 
1 Spenn-ch00 AUGUSTUS mRNA 5691 9072 0.84 - . 
2 Spenn-ch00 AUGUSTUS mRNA 11246 12192 0.17 - . 
3 Spenn-ch00 AUGUSTUS mRNA 12799 15702 0.33 - . 
4 Spenn-ch00 AUGUSTUS mRNA 15752 18482 0.48 - . 
+0

爲什麼在循環中使用'O',很容易被誤讀爲0。 – zx8754

+0

將其改爲'i' – JadenBlaine

+0

請將'head(example)'或'dput(example)'的輸出添加到帖子中,以便我們瞭解您的數據。可能你可以避免循環altogther。 – zx8754

回答

1

問題是,我只是把包含在lpos,而不是使用範圍內的一個數字,從1到lpos

lpos 
[1] 5 

for(i in 1:lpos){ 
indx <- sapply(example[,4], function(x) (x > minpos[i]) & (x < maxpos[i])) 
newrow <- example[indx,] 
result = rbind(result, newrow) 
} 

當代碼是這樣的現在,它完美的工作。

相關問題