我有兩個要比較的向量。我試過 match() 和 %in% 但它沒有給我想要的結果。解決方案應該在R base 中。
輸入
a = c(1,2,3,4,5)
b = c(1,1,2)
經過測驗的解決方案
b %in% a
TRUE TRUE TRUE
但是,我希望它說 TRUE FALSE TRUE,因為“1”在 a 中只出現一次。
在 R Base 中有沒有辦法做到這一點?
uj5u.com熱心網友回復:
1)將“1”附加到第一次出現的每個條目,“2”附加到第二個,依此類推。然后使用那些。
f <- function(x) paste(x, seq_along(x))
ave(b, b, FUN = f) %in% ave(a, a, FUN = f)
## [1] TRUE FALSE TRUE
2)示例中的 a 中沒有重復項,如果是這種情況,則另一種方法是檢查 b 的每個元素是否在 a 中,如果是重復項,則拒絕它。
(b %in% a) & !duplicated(b)
## [1] TRUE FALSE TRUE
筆記
a <- c(1, 2, 3, 4, 5); b <- c(1, 1, 2) # inputs
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388513.html
標籤:r
上一篇:R-連分數
