Когда сложность операции такова, что необходим dplyr для ряда? - PullRequest
0 голосов
/ 12 июня 2019

Согласно документации оператор 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

Мой вопрос: когда именно нам нужно использовать rowwise в ходе операций dplyr? В любое время операция не является базовой арифметической или есть какие-то другие правила, когда операция будет автоматически обрабатывать свои входные данные как строки по сравнению со столбцами?

1 Ответ

0 голосов
/ 12 июня 2019

Я думаю, что короткий ответ заключается в том, что sum, max не "векторизовано", оно принимает несколько векторов и дает вам агрегированный ответ, немного странно.Я обычно стараюсь использовать функции, которые не требуют 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...