gpt4 book ai didi

从 data.table 中检索动态列集

转载 作者:行者123 更新时间:2023-12-04 11:39:31 25 4
gpt4 key购买 nike

分配名称存储在字符向量中的列集已得到很好的讨论,但我似乎找不到检索列并对它们进行操作的解决方案。

cols = c("x", "y")
DT = data.table(x = 10:15, y = 20:25)

> DT
x y
1: 10 20
2: 11 21
3: 12 22
4: 13 23
5: 14 24
6: 15 25

期望的输出

> DT[,paste(x,y)]

[1] "10 20" "11 21" "12 22" "13 23" "14 24" "15 25"

我的目标是根据 cols 中的列为每一行获取唯一标识符。我可以通过对列名称进行硬编码来做到这一点,但我宁愿引用 cols


这是我尝试过的一些语法及其输出。

获取()

> DT[,get(cols)]

[1] 10 11 12 13 14 15

括号

> DT[,(cols)]

[1] "x" "y"

列表

> DT[,as.list(cols)]
V1 V2
1: x y

with=F

> DT[,cols, with=F]

x y
1: 10 20
2: 11 21
3: 12 22
4: 13 23
5: 14 24
6: 15 25

这有效,但我无法对列进行操作:

> DT[,paste(cols), with=F]

x y
1: 10 20
2: 11 21
3: 12 22
4: 13 23
5: 14 24
6: 15 25

最佳答案

我们可以在 Data.table (.SD) 的子集上使用 pastedo.call

DT[, do.call(paste, .SD)]
#[1] "10 20" "11 21" "12 22" "13 23" "14 24" "15 25"

如果这需要在列的子集上完成,请在 .SDcols 中指定这些列,然后执行上述操作

DT[, do.call(paste, .SD), .SDcols = cols]
#[1] "10 20" "11 21" "12 22" "13 23" "14 24" "15 25"

或者使用 mget

修改 OP 的解决方案
DT[, do.call(paste, mget(cols))]

关于从 data.table 中检索动态列集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41148708/

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