我想要做的是
我正在try 编写一个使用dplyr动词的函数,该函数将"箭头打开的数据集"作为第一个参数,并将该数据集中的一列作为第二个参数.由于我希望将列作为字符串传递(对于我正在处理的实际任务的上下文来说是必需的,即Shiny),所以我使用语法.data[[.column]].下面是我收到的错误的图像和一些重现该错误的代码.任何帮助或洞察力都是值得感谢的.
错误消息的图像
重现错误的代码
# install.packages(c("dplyr", "ggplot2", "arrow"))
library(dplyr)
arrow::write_parquet(x = ggplot2::mpg, sink = "sample_data.parquet")
dat <- arrow::open_dataset("sample_data.parquet")
glimpse(dat)
get_metric <- function(.data, .metric) {
.data %>%
group_by(manufacturer, cyl) %>%
summarize(
new_col = sum(.data[[.metric]], na.rm = T)
) %>%
ungroup()
}
get_metric(dat, "cty") %>% collect()
其他代码可以工作,但不太使用箭头,因此速度不理想
在这段代码中,我收集的是在整齐的计算之前的东西,所以它本质上只是常规的dplyr代码.它运行,但比我在将内容提取到所述函数之前成功运行的代码慢.
get_metric2 <- function(.data, .metric) {
.data %>%
collect() %>%
group_by(manufacturer, cyl) %>%
summarize(
new_col = sum(.data[[.metric]], na.rm = T)
) %>%
ungroup()
}
get_metric2(dat, "cty")