R: 检查其长度时 tbl_spark 中的下标越界

R: subscript out of bounds in tbl_spark when checking its length

我是 R 中的 sparklyr 库的新手,我开始使用 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

所以,我推断当输出是单个数字时就会出现问题。这里发生了什么,我该如何解决?

此问题与引发这些错误的 tidyverse 的最新版本有关。 tally() 的替代方法是 sdf_nrow()summarize(mean()) 的替代方法是 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