我是R的新手并且学习了子集化。我有一张桌子,我正试图获得表格子集的大小。我的问题是,当我尝试两种不同的方式时,我会得到两个不同的答案。对于表“dat”,我试图选择RMS为5且BDS为2的所有行:
dim(dat[(dat$RMS==5) & (dat$BDS==2),])
给出了与
不同的答案dim(subset(dat,(dat$RMS==5) & (dat$BDS==2)))
第二个是正确的,有人可以解释为什么这些不同以及为什么第一个给我错误的答案?
由于
答案 0 :(得分:5)
原因必须是通过这两种方法对NA值进行不同的处理。如果从数据框中删除带NA的行,则应得到相同的结果:
dat_clean = na.omit(dat)
答案 1 :(得分:2)
适合我......
> x = c(1,1,2,2,3,3)
> y = c(4,4,5,5,6,6)
>
> X = data.frame(x,y)
>
> dim(X[X$x==1 & X$y==4,])
[1] 2 2
>
> (X[X$x==1 & X$y==4,])
x y
1 1 4
2 1 4
> dim(subset(X,(X$x==1) & (X$y==4)))
[1] 2 2
> subset(X,(X$x==1) & (X$y==4))
x y
1 1 4
2 1 4