Я пытаюсь ответить, сколько полей в каждой строке меньше 5, используя pipe. В следующем виде это работает (без пайпа):
rowSums( iris[,1:4] < 5 ) # works!
Но попытка задать тот же вопрос с помощью трубы не работает:
iris[1:5,1:4] %>% rowSums( . <5 ) # wrong: returns the total rowsum
iris[,1:4] %>% rowSums( < 5 ) # does not work either.
Edit1: этот обходной путь от пользователя docendo discimus решает эту проблему:
iris %>% mutate(sumVar = rowSums(.[1:4]<5))
Edit2: мне больше нравится обходной путь docendo discimus, потому что он позволяет избежать вложенных скобок:
iris %>%
slice(1:5) %>%
select(1:4) %>%
dplyr::mutate( "New_var" = 10 ) %>% dplyr::mutate( "sumvar" = rowSums(. < 5 ) )
В то время как для следующего решения (AFAICS) требуется вложенная скобка для работы (плюс я не могу понять, как изменить новый столбец в кадре данных)
(iris %>%
slice(1:5) %>%
select(1:4) %>%
dplyr::mutate( "New_var" = 10 ) < 5 ) %>% rowSums(.)
iris[1:5,1:4] %>% {rowSums( . <5 )}
- person Khashaa   schedule 23.12.2014