Я пытаюсь реплицировать набор операций, используя dplyr, и по какой-то причине моя попытка не дает таких же результатов. Мой вопрос состоит в двух вещах: 1. Почему версия dplyr, которую я написал, не приводит к тому же результату, что и базовая операция, и 2. Какова самая ясная реализация dplyr (piping). Сначала приведем несколько примеров данных, которые представляют собой меньший масштаб моей собственной проблемы:
abc <- data.frame(a = rnorm(100, 5, 6), b = rnorm(100, 2, 3), c = rnorm(100, 0, 5), d = rnorm(100, 50, 3))
rand <- sample(c(1:100), 100, replace = F)
e <- 5
f <- 50
Ниже приведен случай с базой R.
# Case 1
abc.2 <- abc[rand,][(rand <= f) | (abc[rand, "a"] < e),]
Это моя попытка использовать dplyr, но результат abc.3 отличается от abc.2
# Case 2
abc.3 <- abc[rand,]
abc.3 <- abc.3 %>% filter(d >= f | d < e)
Что здесь происходит?!?