R: нижний индекс выходит за пределы в tbl_spark при проверке его длины

#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