如何在 R 中使用 Apache Arrow 的自定义函数?
How to use custom function with Apache Arrow in R?
我正在尝试用 R 学习 Apache Arrow。我找不到如何让用户
用箭头定义函数。
library(arrow)
#> See arrow_info() for available features
#>
#> Attaching package: 'arrow'
#> The following object is masked from 'package:utils':
#>
#> timestamp
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
简单地return向量的平均值
f1 <- function(x) {
x <- Array$create(x)
res <- mean(x, na.rm = TRUE)
return(as.vector(res))
}
如果我尝试使用我的 f1
函数,我会收到此警告和结果
是在计算之前将数据拉入R。
ds <- arrow_table(head(mtcars, 6))
ds %>%
mutate(mpg2 = f1(mpg)) %>%
collect()
#> Warning: Expression f1(mpg) not supported in Arrow; pulling data into R
#> mpg cyl disp hp drat wt qsec vs am gear carb mpg2
#> 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 20.5
#> 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 20.5
#> 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 20.5
#> 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 20.5
#> 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 20.5
#> 6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 20.5
有没有办法在 R 中的 Arrow 中使用自定义函数?
由 reprex package (v2.0.1)
于 2022-03-18 创建
这似乎是 documented behaviour:
If you try to call a function which does not have arrow mapping, the data will be pulled back into R, and you will see a warning message.
如果您考虑一下,这是有道理的,因为 'backend' 不包含嵌入式 R 解释器,因此我们可能无法期望向下发送任意函数。
我正在尝试用 R 学习 Apache Arrow。我找不到如何让用户 用箭头定义函数。
library(arrow)
#> See arrow_info() for available features
#>
#> Attaching package: 'arrow'
#> The following object is masked from 'package:utils':
#>
#> timestamp
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
简单地return向量的平均值
f1 <- function(x) {
x <- Array$create(x)
res <- mean(x, na.rm = TRUE)
return(as.vector(res))
}
如果我尝试使用我的 f1
函数,我会收到此警告和结果
是在计算之前将数据拉入R。
ds <- arrow_table(head(mtcars, 6))
ds %>%
mutate(mpg2 = f1(mpg)) %>%
collect()
#> Warning: Expression f1(mpg) not supported in Arrow; pulling data into R
#> mpg cyl disp hp drat wt qsec vs am gear carb mpg2
#> 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 20.5
#> 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 20.5
#> 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 20.5
#> 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 20.5
#> 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 20.5
#> 6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 20.5
有没有办法在 R 中的 Arrow 中使用自定义函数?
由 reprex package (v2.0.1)
于 2022-03-18 创建这似乎是 documented behaviour:
If you try to call a function which does not have arrow mapping, the data will be pulled back into R, and you will see a warning message.
如果您考虑一下,这是有道理的,因为 'backend' 不包含嵌入式 R 解释器,因此我们可能无法期望向下发送任意函数。