我的数据看起来像this
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
答案 0 :(得分:3)
您应该使用&
而非&&
进行矢量化操作。
subset(dat.full ,Cov == 10 & dis==0 & err==0 & kval==1,select=prob)
prob
4 0.0027056170
5 0.0001878731
答案 1 :(得分:1)
你可以通过
子集来解决这个问题subset(dat.full, (Cov == 10 & dis==0 & err==0 & kval==1), select=prob)
您遇到的问题是,&&
未向量化,但应仅用于标量值。使用&
(或|
代替OR)。