2017-09-06 23 views
0

當我執行下面的代碼,在分歧一些元素的規則保留在數據幀:子集使用哪個()

coefs.total.b <- coefs.total[-which(coefs.total[1:1000, 25:36] < 0.001 & 
            coefs.total[1:1000, 37:48] > 0.6), ] 
+0

究竟是你想表達的規則? –

+0

我想要排除第26列至第36列中含有低於0.001的元素以及列中高於0.6的元素的行37:48 –

+0

因此,如果在第一行第26列中<0.001且第38列> 0.6,是否要刪除第一排還是第1001?第一個似乎更有用,第二個是我認爲你的代碼的作用 –

回答

0

which(coefs.total[1:1000, 25:36] < 0.001)將(假設coefs.total是一個矩陣)測試每個單獨的小區,逐行移動。換句話說,第一行的第26位將是第1001個值,依此類推。

如果你想結合不同行的測試,你需要明確地做到這一點。從你的評論中,我假設你想把它們與或結合起來。這可以通過使用apply行方向與功能any(類似於all表達和)來完成,或者通過使用rowSums這我要表明:

coefs.total.b <- coefs.total[-which(
    rowSums(coefs.total[1:1000, 25:36] < 0.001) > 0 & 
    rowSums(coefs.total[1:1000, 37:48] > 0.6) > 0), ]