[英]How to use base::rowSums() with dplyr/magrittr pipe (%>%)
我试图使用管道来回答每行中少于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(.)
iris[1:5, 1:4] %>% is_less_than(5) %>% rowSums
# 1 2 3 4 5
# 3 4 4 4 3
将magrittr
(在不需要相当于dplyr
这里)
rowSums(iris[1:5, 1:4] < 5)
# 1 2 3 4 5
# 3 4 4 4 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.