3 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
問(wèn)題是向量回收。
您的第一行完全符合您的期望。它檢查什么的元素df$time都在c(0.5, 3),并返回它們的值。
您的第二行比較棘手。實(shí)際上等于
df[df$time == rep(c(0.5,3), length.out=nrow(df)),]
看到這一點(diǎn),讓我們看看使用vector會(huì)發(fā)生什么rep(0.5, 10):
rep(0.5, 10) == c(0.5, 3)
[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
查看它如何返回每個(gè)奇數(shù)值。本質(zhì)上它與向量匹配0.5c(0.5, 3, 0.5, 3, 0.5...)
您可以操縱向量以這種方式不產(chǎn)生匹配項(xiàng)。取向量rep(c(3, 0.5), 5):
rep(c(3, 0.5), 5) == c(0.5, 3)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
他們都是假的。您將每0.5匹配3,反之亦然。

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
在
df$time == c(0.5,3)
第c(0.5,3)一個(gè)以的形式廣播df$time,即c(0.5,3,0.5,3,0.5,3,0.5,3,0.5,3)。然后,將兩個(gè)向量逐個(gè)元素進(jìn)行比較。
另一方面,
df$time %in% c(0.5,3)
檢查的每個(gè)元素是否df$time屬于集合{0.5, 3}。

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是一個(gè)老話題,但是我在任何地方都沒(méi)有看到這個(gè)答案,它可能與某些人有關(guān)。
兩者之間的另一個(gè)區(qū)別是對(duì)NA(丟失值)的處理。
NA == NA
[1] NA
NA %in% c(NA)
[1] TRUE
- 3 回答
- 0 關(guān)注
- 876 瀏覽
添加回答
舉報(bào)