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
我是 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