gpt4 book ai didi

r - .SD 和 .SDcols 用于 data.table 连接中的 i 表达式

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

我正在尝试根据连接将列子集从 Y 复制到 X,其中列子集是动态的

我可以很容易地识别列:names(Y)[grep("xxx", names(Y))]但是当我尝试在 j 表达式中使用该代码时,它只给我列名,而不是列的值。 .SD.SDcols非常接近,但它们仅适用于 x expression .我正在尝试做这样的事情:
X[Y[names(Y)[grep("xxx", names(Y))] := .SD, .SDcols = names(Y)[grep("xxx", names(Y)), on=.(zzz)]
是否有一组等效的 .SD.SDcols适用于 i expression 的构造?或者,我是否需要为 j expression 建立一个字符串?和 eval那个字符串?

最佳答案

也许这会帮助你开始:

library(data.table)
X <- as.data.table(mtcars[1:5], keep.rownames = "id")
Y <- as.data.table(mtcars, keep.rownames = "id")
cols <- c("gear", "carb")

# copy cols from Y to X based on common "id":
X[Y, (cols) := mget(cols), on = "id"]

正如 Frank 在他的评论中指出的那样,在列名前加上 i. 可能更安全。确保分配的列确实来自 Y :
X[Y, (cols) := mget(paste0("i.", cols)), on = "id"]

关于r - .SD 和 .SDcols 用于 data.table 连接中的 i 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257664/

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