2013-07-03 68 views
0

執行子當處理缺失的行線我有一個看起來像this如何R中

Cov dis err kval n   prob 
1 10 0 0 0 0 7.574657e-01 
2 10 0 0 0 1 2.104075e-01 
3 10 0 0 0 2 2.922241e-02 
4 10 0 0 1 3 2.705617e-03 
5 10 0 0 1 4 1.878731e-04 
6 10 0 0 0 5 1.043613e-05 
7 10 0 0 0 6 4.830806e-07 
8 10 0 0 0 7 1.916636e-08 
9 10 1 0 0 8 6.653565e-10 
10 10 1 0 0 9 2.053068e-11 
11 10 1 0 0 10 5.701398e-13 

我想要做的是對數據進行子集的數據。 但爲什麼這失敗?

dat.full <- read.table("http://dpaste.com/1283733/plain/",header=TRUE); 
subset(dat.full,(Cov == 10 && dis==0 && err==0 && kval==1), select=prob); 

它提供了以下缺失的行輸出:

[1] prob 
<0 rows> (or 0-length row.names) 

什麼是執行子集的正確方法是什麼?

我希望它返回:

4 2.705617e-03 
5 1.878731e-04 

回答

3

您應該使用&,而不是&&的矢量操作。

subset(dat.full ,Cov == 10 & dis==0 & err==0 & kval==1,select=prob) 
      prob 
4 0.0027056170 
5 0.0001878731 
1

您可以通過

subset(dat.full, (Cov == 10 & dis==0 & err==0 & kval==1), select=prob) 

你碰到的問題是與子集解決這個問題,那&&沒有矢量化,但應僅用於標量值。代替使用&(或|)。