今日、データフレームのサブセット操作によるコードのバグに直面しました。私が見つけた問題がバグなのか、それとも R のセマンティクスに違反しているのかを知りたいです。
R 2.15.2-61015 (Trick or Treat) で RHEL x86_64 を実行しています。基本パッケージのサブセット操作を使用しています。
次のコードは再現可能である必要があり、このテストの目的で開始されたクリーンな R コンソールで実行されました。
>teste <-data.frame(teste0=c(1,2,3),teste1=c(3,4,5))
>teste0<-1
>teste1<-1
>subset(teste,teste[,"teste0"]==1 & teste[,"teste1"]==1)
[1] teste0 teste1
<0 rows> (or 0-length row.names)
>subset(teste,teste[,"teste0"]==teste0 & teste[,"teste1"]==teste1)
teste0 teste1
1 1 3
2 2 4
3 3 5
ただし、サブセット操作の外で論理コードを実行すると、次のようになります。
>teste[,"teste0"]==teste0 & teste[,"teste1"]==teste1
[1] FALSE FALSE FALSE
両方のサブセット操作で空のデータフレームが生成されると予想されます。ただし、2 番目のものは完全なデータフレームを返します。これはバグですか、それとも R 環境と名前空間について何か不足していますか?
助けてくれてありがとう、ミゲル