2013-07-03 61 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) 

你碰到的问题是与子集解决这个问题,那&&没有矢量化,但应仅用于标量值。代替使用&(或|)。