2017-08-23 45 views
0

我得到了這個輸出在R,我不明白:我正在查看矢量aa的條目是否存在於下面的向量bb。有人可以解釋我爲什麼這是我的輸出向量的條目並不都是TRUE,正如人們所期望的那樣?奇怪的行爲與%在%運算符在R

aa <- seq(0.1, 0.5, by = 0.1) 
bb <- seq(0.01, 0.99, by = 0.01) 
aa %in% bb 
[1] FALSE TRUE FALSE TRUE TRUE 

謝謝

+4

[10問題,1種溶液](https://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal) –

+0

確定我看到....感謝您的快速回復!那麼,我想唯一的出路是循環使用'all.equal'(?)我的兩個向量這有點沉重... – ixpl

+1

你不需要循環,你可以做一個這樣的事情在一個(aa),函數(x){any(abs(aa [x] -bb)<。Machine $ double.eps^0.5)})' –

回答

-1

我將向量轉換成數據幀initiatlly,因爲它更容易與他們合作本身。

library(dplyr) 
aa <- seq(0.1, 0.5, by = 0.1) 
bb <- seq(0.01, 0.99, by = 0.01) 

aa <- as.data.frame(aa) 
bb <- as.data.frame(bb) 

aa <- mutate(aa, indicator = 
     ifelse(aa %in% bb[, "bb"], 1, 0)) 
+3

這個答案沒有解決問題的根源:數值精度。此外,數據框架比原始矢量更易於使用的建議充其量只是口味問題。我個人更喜歡在這種情況下使用矢量。 – lmo