gpt4 book ai didi

r - data.table 切换列名

转载 作者:行者123 更新时间:2023-12-03 14:46:36 25 4
gpt4 key购买 nike

请问data.table是否有以下行为是功能还是错误。
鉴于 data.table

dt = data.table(
group = c(rep('group1',5),rep('group2',5)),
x = as.numeric(c(1:5, 1:5)),
y = as.numeric(c(5:1, 5:1)),
z = as.numeric(c(1,2,3,2,1, 1,2,3,2,1))
)
以及包含重复项的列名向量,
cols = c('y','x','y','z') # contains a duplicate column name
data.table正确地阻止我为重复的列名分配值:
dt[,(cols) := lapply(.SD,identity), .SDcols=cols] # Error (OK)
这对我来说似乎是合适的行为,因为它可以帮助避免意外后果。但是,如果我按组做相同的作业,
dt[,(cols) := lapply(.SD,identity), .SDcols=cols, by=group] # No error!
然后 data.table不会抛出错误。赋值通过,可以验证列 yz已经互换。
这对我来说发生在一个大型应用程序中,同时按组贬低变量,并且很难追踪这种行为的来源。给用户的建议当然是在赋值时避免重复列名,避免向 .SDcols提供重复的名称。 .不过, data.table岂不是更好?在这种情况下抛出错误?

最佳答案

这是一个错误,已在 data.table 的 1.12.4 版中修复.这是错误报告:https://github.com/Rdatatable/data.table/issues/4874 .
遇到此问题的其他用户可以简单地更新他们的软件包版本,例如使用 install.packages('data.table') .要检查当前包版本,请加载 data.table然后查看 sessionInfo() 的输出.
但最好避免向 .SDcols 提供重复的列名。 .

关于r - data.table 切换列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65710734/

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