我通过arrow
包的open_dataset
函数打开了一个.parquet数据集。我想使用across
一次清理几个数值列。然而,当我运行以下代码时:
start_numeric_cols = "sum"
sales <- sales %>% mutate(
across(starts_with(start_numeric_cols) & (!where(is.numeric)),
\(col) {replace(col, col == "NULL", 0) %>% as.numeric()}),
across(starts_with(start_numeric_cols) & (where(is.numeric)),
\(col) {replace(col, is.na(col), 0)})
)
#> Error in `across_setup()`:
#> ! Anonymous functions are not yet supported in Arrow
这个错误消息非常有用,但是我想知道是否有任何方法可以只对across
中的dplyr
动词执行相同的操作(或者另一种不必键入每个列名的解决方法)。
1条答案
按热度按时间7fhtutme1#
arrow
有越来越多的函数,可以在不将数据拉入R的情况下使用(可用的here),但replace()
尚不支持。但是,您可以使用ifelse()
/if_else()
/case_when()
。还要注意,在常规匿名函数不支持的情况下,支持purrr-style lambda函数。我没有您的数据,因此将使用
iris
数据集作为示例来演示查询是否成功构建,即使在此数据的上下文中它没有完全意义。