#r #group-by #sparklyr
#r #сгруппировать по #sparklyr
Вопрос:
Я новичок в sparklyr
библиотеке в R и начинаю играть library(nycflights13)
, но у меня возникают проблемы с моим фреймом данных каждый раз, когда я пытаюсь вычислить из него результат. Вот что я делаю:
library(sparklyr)
library(tidyverse)
library(nycflights13)
sc <- spark_connect(master = 'local', version = '2.4.0')
fly <- sdf_copy_to(sc, flights, overwrite = TRUE)
fly %>% tally()
Когда я запускаю этот код, консоль печатает Error in regexpr("`", x)[[1]] : subscript out of bounds
. Я проверил tally()
функцию, чтобы узнать, является ли это проблемой, но та же ошибка появляется, когда я запускаю команду, например fly %>% summarize(delay = mean(dep_delay, na.rm = TRUE))
, для вычисления среднего значения столбца.
Однако, если я сделаю group_by
первое, ошибка исчезнет, и результат будет таким, как я ожидал:
> fly %>% group_by(origin) %>% tally()
# Source: spark<?> [?? x 2]
origin n
<chr> <dbl>
1 JFK 111279
2 EWR 120835
3 LGA 104662
> fly %>% group_by(origin) %>% summarize(delay = mean(dep_delay, na.rm = TRUE))
# Source: spark<?> [?? x 2]
origin delay
<chr> <dbl>
1 JFK 12.1
2 EWR 15.1
3 LGA 10.3
Итак, я делаю вывод, что проблема возникает, когда выводится одно число. Что здесь происходит и как мне это исправить?
Ответ №1:
Эта проблема связана с последней версией tidyverse
, которая вызывает эти ошибки. Альтернатива tally()
is sdf_nrow()
и альтернатива summarize(mean())
is sdf_describe()
:
> fly %>% sdf_nrow()
[1] 336776
> fly %>% sdf_describe(cols = 'dep_delay')
# Source: spark<?> [?? x 2]
summary dep_delay
<chr> <chr>
1 count 328521
2 mean 12.639070257304708
3 stddev 40.21006089212968
4 min -43.0
5 max 1301.0
https://www.rdocumentation.org/packages/sparklyr/versions/1.4.0/topics/sdf_dim
https://www.rdocumentation.org/packages/sparklyr/versions/1.4.0/topics/sdf_describe