【发布时间】:2019-06-12 18:36:51
【问题描述】:
根据documentation,dplyr rowwise 运算符可用于“支持需要应用于每一行的任意复杂操作”。我觉得这有点模糊。例如,加法似乎没有上升到逐行所需的复杂程度:
df <- data.frame( a = c(1,2,3,4), b = c(5,6,7,8))
df %>%
mutate(
c = a+b,
)
a b c
1 1 5 6
2 2 6 8
3 3 7 10
4 4 8 12
但有一个非常相似的功能,sum 可以。例如:
df %>%
mutate(
d = sum(a,b)
) %>%
rowwise() %>%
mutate(
e = sum(a,b)
)
a b d e
1 1 5 36 6
2 2 6 36 8
3 3 7 36 10
4 4 8 36 12
我的问题是,在 dplyr 操作过程中,我们究竟什么时候需要使用rowwise?任何时候操作都不是基本算术操作,或者是否有其他规则来说明操作何时会自动将其输入视为按行与按列?
【问题讨论】:
-
我经常发现
rowwise() %>% mutate(...)可以替换为对mutate(a = Map(...))(或mapply或purrr::pmap或其同级之一)的调用。