什么时候需要dplyr按行操作的复杂性?

时间:2019-06-12 18:36:51

标签: r dplyr

根据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?任何时候该操作不是一种基本的算术运算,还是有其他一些规则可以确定何时将一个操作自动将其输入按行还是按列进行处理?

1 个答案:

答案 0 :(得分:0)

我认为简短的答案是summax不是“矢量化的”,它可以接受多个矢量并为您提供汇总的答案,这有点奇怪。我通常尝试使用不需要rowwise的函数,因为它的运行速度很慢,并且出错的风险很高。您的简单案例的解决方案可能是:

library(hablar)
library(dplyr)

df <- data.frame( a =  c(1,2,3,4), b = c(5,6,7,8)) 

df %>% mutate(c = row_sum(a:b))