gpt4 book ai didi

r - 使用 := using variable name 更新列

转载 作者:行者123 更新时间:2023-12-01 16:22:37 25 4
gpt4 key购买 nike

我正在尝试更新 data.table 中的列,但是在使用变量引用列名称时遇到问题:

dt = data.table(a = 1:10, b = 1:10)
nm = 'a'
dt[ , get(nm) := get(nm) + 1]

Error in get(nm) : object 'a' not found

如果我尝试 dt[ , nm := get(nm) + 1] 我会得到一个新列 nm

我想要的是

     a  b
1: 2 1
2: 3 2
3: 4 3
4: 5 4
5: 6 5
6: 7 6
7: 8 7
8: 9 8
9: 10 9
10: 11 10

最佳答案

这里get返回。在:=lhs中,我们只需要提取列名字符串即可。为此,只需用 ()

包裹它
dt[ , (nm) := get(nm) + 1]

从技术上讲,.SDcols 将是指定 data.table 中感兴趣的列的首选方式

dt[, (nm) := .SD[[1]] + 1, .SDcols = nm]

这里,[[用于提取向量

如果还有更多列,

dt[, (nm) := lapply(.SD, `+`, 1), .SDcols = nm]

关于r - 使用 := using variable name 更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57328709/

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