gpt4 book ai didi

r - 在 R 数据表中,max 对有序因子起作用并且在分组时失败

转载 作者:行者123 更新时间:2023-12-04 09:36:16 24 4
gpt4 key购买 nike

函数max()在有序因子类型的列上正确运行。但是,当列与 by= 分组时,相同的操作会失败。 .

假设我有一个 data.table 为:

DT <- data.table(ID=rep(1:3, 3), State=sample(LETTERS[1:3], 9, replace=TRUE))

转换列 State将因子排序为:
DT[, State := factor(State, levels=LETTERS[1:3], ordered = TRUE)]

这有效:
DT[, max(State)]

这失败并出现错误:
DT[, max(State), by="ID"]

错误是:gmax(State) 中的错误:max 对因子没有意义。

怎么来的?

最佳答案

这是data.table 的当前开发版本中已修复的错误。 .

您可以通过以下方式安装开发版本:

install.packages('data.table', type = 'source',
repos = 'http://Rdatatable.github.io/data.table')

如果失败,请查看 Installation wiki 上的完整详细信息.
library(data.table)
# data.table 1.11.5 IN DEVELOPMENT built 2018-08-13 20:20:11 UTC; travis Latest news: r-datatable.com
DT[ , max(State), by="ID"]
# ID V1
# 1: 1 C
# 2: 2 C
# 3: 3 B

对于无法更新的受控/生产环境中的那些,您仍然可以通过运行来回避问题:
dt_optim = options(datatable.optimize = 0) 
DT[ , max(State), by="ID"]
# resetting afterwards to keep your code running as fast as possible
options(datatable.optimize = dt_optim)

该错误来自 data.table的内部优化分组框架 GForce ;上述解决方法停止执行此代码并默认为 base::max .

关于r - 在 R 数据表中,max 对有序因子起作用并且在分组时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50916153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com