2016-10-11 20 views
0

私は質問が出たときにthis postを読んでいました。同じ値を返していない等価(?)関数

なぜ(ポストのデータフレーム内で)この関数は、同じ値この関数として

>df[df$X3==c(1,2),] 

    X1 X2 X3 
1 s1 45.11 1 
4 s1 51.41 2 
10 s1 43.12 2 
17 s5 25.40 1 

を返さないのですか?

>df[df$X3 %in% c(1,2),] 

    X1 X2 X3 
1 s1 45.11 1 
2 s1 45.13 1 
3 s1 53.42 2 
4 s1 51.41 2 
9 s3 43.58 2 
10 s1 43.12 2 
17 s5 25.40 1 
18 s5 25.50 1 

私はどちらも同じであると信じていました。それらの違いは何ですか?

ありがとうございます。

+0

ありがとうございました – Cris

答えて

3

df$X3 == c(1,2)あなたの考えはしていません。 c(1,2)が最初にリサイクルされ、length(df$X3)と同じ長さになると、要素ごとに==が実行されます。小さな例を見てみましょう:

1:4 == 2:3 ## which is doing `1:4 == c(2,3,2,3)` 
# [1] FALSE FALSE FALSE FALSE 

、我々はすべてのFALSEを取得します。一方、我々が行う場合

1:4 %in% 2:3 
# [1] FALSE TRUE TRUE FALSE 

我々は2つを得るTRUE

+0

最初のコードブロックのコメントは "1:4 == ..."ではなく1:3であるべきですか? –

関連する問題