我正在尝试使用管道回答每行中有多少个字段小于 5 。它以以下形式工作(没有管道):
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(.)