r - dplyr - 使用 rowwise() 应用自定义函数

标签 r dplyr rowwise

我有一个数据框,想使用 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)))

请注意,如果您不致力于使用自己的函数,则可以完全按行跳过,正如 Nettle 还指出的那样。 rowSums 已经以逐行方式处理数据帧,这就是它起作用的原因:

dt2 %>% mutate(nr_of_0s = rowSums(. == 0))

关于r - dplyr - 使用 rowwise() 应用自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821137/

相关文章:

r - 使用dplyr按多个变量分组时计算变量的比例

使用 mutate 和 rowwise 返回列表

r - 当同一行中有多个 "."参数时如何使用 mutate c_across

r - 通过函数传递表达式

r - 如何在R中没有图的情况下创建图例?

r - 使用 R 中的 str_count 函数计算多个模式

css - ioslides Markdown 演示文稿标题页中的字体大小

r - Bind_rows_(x, .id) 中的错误 : Argument 1 must have names

r - 在 R data_frame 中提取每个观察的因子级别?

r - Tidyverse 可能存在也可能不存在的列的按行求和