GNU R,subset(),&&演算子の使用で結果が変に

追記:解決しました(ref: http://d.hatena.ne.jp/gnarl/20090107/1231336755 )

> subset(data.frame(a=c(10,20),b=c(20,30)))
   a  b
1 10 20
2 20 30

式を指定しなければ渡したデータセットがそのまま返る

> subset(data.frame(a=c(10,20),b=c(20,30)),b > 20)
   a  b
2 20 30

bが20以上の行が返る

> subset(data.frame(a=c(10,20),b=c(20,30)),b > 20 && a < 40)
[1] a b
<0 rows> (or 0-length row.names)

????

> subset(data.frame(a=c(10,20),b=c(20,30)),b > 20 & a < 40)
   a  b
2 20 30

????

> a<-20
> b<-30
> b > 20 && a < 40
[1] TRUE
> b > 20 & a < 40
[1] TRUE

なのになー。式を全部評価するか偽とわかった時点でうちきるかの差しかないと思ったんだが、うーむ

意味はよくわからないけど、&を使っておいたほうが無難だということはわかった。

参考までにバージョン。2.7.0、2.8.1で試したけど同じでした

> version
               _                           
platform       i386-pc-mingw32             
arch           i386                        
os             mingw32                     
system         i386, mingw32               
status                                     
major          2                           
minor          7.0                         
year           2008                        
month          04                          
day            22                          
svn rev        45424                       
language       R                           
version.string R version 2.7.0 (2008-04-22)
> version
               _                           
platform       i386-pc-mingw32             
arch           i386                        
os             mingw32                     
system         i386, mingw32               
status                                     
major          2                           
minor          8.1                         
year           2008                        
month          12                          
day            22                          
svn rev        47281                       
language       R                           
version.string R version 2.8.1 (2008-12-22)