【发布时间】:2018-10-15 16:36:12
【问题描述】:
我有一个数据框,想使用 dplyr 的逐行计算每行中零的数量。我做错了什么?
dt2 = data.frame(A = c(8, 6), B = c(0, 0), C = c(0, 5))
dt2
zerocount <- function(x) {sum(x == 0)}
library(dplyr)
dt2 %>% rowwise() %>% mutate(nr_of_0s = zerocount(A, B, C))
如果我将上面行中的 zerocount(A, B, C) 替换为例如 max(A, B, C),则上面的代码有效。怎么了? 谢谢!
【问题讨论】:
-
我已阅读该链接,但没有看到直接适用于我的问题。
-
我认为你的问题不在于行。你的函数的编写方式,它需要一个对象。尝试添加 c():
dt2 %>% rowwise() %>% mutate(nr_of_0s = zerocount(c(A, B, C))) -
很遗憾您指定了
rowwise。这也很有效dt2 %>% mutate(zero.count = rowSums(.==0) ) -
@benc - 非常感谢您的评论。您能否将其作为回复提供,以便我为您投票?