arrow 包包含 37 个 dplyr 表函数的方法,其中许多是用于对一个或多个表进行转换的“动词”。该包还将 223 个 R 函数映射到 Arrow 计算库中对应的函数。这些允许您在调用 R 函数的 dplyr 方法中编写代码,包括 stringr 和 lubridate 等包中的许多函数,并且它们将被翻译成 Arrow 并在 Arrow 查询引擎 (Acero) 上运行。本文档列出了所有已映射的函数。
dplyr 动词
大多数动词函数返回一个 arrow_dplyr_query 对象,其精神与 dbplyr::tbl_lazy 相似。这意味着动词不会急切地评估数据上的查询。要运行查询,请调用 compute()(返回一个 arrow Table)或 collect()(将生成的 Table 提取到 R tibble 中)。
anti_join():copy参数被忽略distinct():.keep_all = TRUE如果存在,返回非缺失值,仅当所有值都缺失时才返回缺失值。full_join():copy参数被忽略inner_join():copy参数被忽略left_join():copy参数被忽略pull():不支持name参数;默认返回 R 向量,但此行为已弃用,并将在未来版本中返回 Arrow ChunkedArray。提供as_vector = TRUE/FALSE以控制此行为,或全局设置options(arrow.pull_as_vector)。right_join():copy参数被忽略semi_join():copy参数被忽略slice_head():不支持组内切片;Arrow 数据集没有行顺序,因此头部是非确定性的;prop仅支持在无需评估即可知nrow()的查询上slice_max():不支持组内切片;不支持with_ties = TRUE(dplyr 默认值);prop仅支持在无需评估即可知nrow()的查询上slice_min():不支持组内切片;不支持with_ties = TRUE(dplyr 默认值);prop仅支持在无需评估即可知nrow()的查询上slice_sample():不支持组内切片;不支持replace = TRUE和weight_by参数;n仅支持在无需评估即可知nrow()的查询上slice_tail():不支持组内切片;Arrow 数据集没有行顺序,因此尾部是非确定性的;prop仅支持在无需评估即可知nrow()的查询上summarise():目前不支持窗口函数;不支持参数.drop = FALSE和.groups = "rowwise"
函数映射
在下面的列表中,列出了 Acero 和 R 函数之间在行为或支持方面的任何差异。如果函数名称后没有注释,则可以假定该函数在 Acero 中的工作方式与在 R 中相同。
函数可以调用为 pkg::fun() 或直接 fun(),即 str_sub() 和 stringr::str_sub() 都有效。
除了这些函数,您还可以直接调用 Arrow 的 281 个计算函数中的任何一个。Arrow 有许多不映射到现有 R 函数的函数。在其他有 R 函数映射的情况下,如果您不希望 R 映射使 Acero 行为像 R 一样进行调整,您仍然可以直接调用 Arrow 函数。这些函数列在 C++ 文档中,在 R 的函数注册表中,它们以 arrow_ 前缀命名,例如 arrow_ascii_is_decimal。
base
as.Date():Arrow 中不支持多个tryFormats。考虑使用 lubridate 专门的解析函数ymd()、ymd()等。as.difftime():仅支持units = "secs"(默认值)data.frame():不支持row.names和check.rows参数;stringsAsFactors必须为FALSEdifftime():仅支持units = "secs"(默认值);不支持tz参数nchar():不支持allowNA = TRUE和keepNA = TRUEpaste():暂不支持collapse参数paste0():暂不支持collapse参数strptime():接受base函数中没有的unit参数。有效值为 "s"、"ms" (默认)、"us"、"ns"。substr():start和stop的长度必须为 1
dplyr
case_when():不支持.ptype和.size参数
lubridate
dmy():不支持locale参数dmy_h():不支持locale参数dmy_hm():不支持locale参数dmy_hms():不支持locale参数dpicoseconds():不支持dym():不支持locale参数fast_strptime():不支持lt和cutoff_2000的非默认值force_tz():不支持从非 UTC 时区进行时区转换;对于不存在的时间,支持roll_dst值 'error' 和 'boundary';对于模糊时间,支持roll_dst值 'error'、'pre' 和 'post'。make_datetime():仅支持 UTC (默认) 时区make_difftime():仅支持units = "secs"(默认值);不支持同时提供num和...mdy():不支持locale参数mdy_h():不支持locale参数mdy_hm():不支持locale参数mdy_hms():不支持locale参数my():不支持locale参数myd():不支持locale参数parse_date_time():不支持quiet = FALSE。可用格式为 H、I、j、M、S、U、w、W、y、Y、R、T。在 Linux 和 OS X 上还额外支持 a、A、b、B、Om、p、r。ydm():不支持locale参数ydm_h():不支持locale参数ydm_hm():不支持locale参数ydm_hms():不支持locale参数ym():不支持locale参数ymd():不支持locale参数ymd_h():不支持locale参数ymd_hm():不支持locale参数ymd_hms():不支持locale参数yq():不支持locale参数
stats
median():计算近似中位数 (t-digest)quantile():probs长度必须为 1;计算近似分位数 (t-digest)
stringr
任何函数都不支持模式修饰符 coll() 和 boundary()。
str_c():暂不支持collapse参数str_count():pattern必须是长度为 1 的字符向量str_split():不支持不区分大小写的字符串拆分和拆分为 0 部分str_sub():start和end的长度必须为 1