gpt4 book ai didi

r - 独立子集 data.table 列

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

我从下表 dt 开始,并尝试通过列表 keys 对其列进行子集化:

library(data.table)

set.seed(123)

randomchar <- function(n, w){
chararray <- replicate(w, sample(c(letters, LETTERS), n, replace = TRUE))
apply(chararray, 1, paste0, collapse = "")
}

dt <- data.table(x = randomchar(1000, 3),
y = randomchar(1000, 3),
z = randomchar(1000, 3),
key = c("x", "y", "z"))

keys <- with(dt, list(x = sample(x, 501),
y = sample(y, 500),
z = sample(z, 721)))

我可以通过循环得到我想要的结果:

desired <- copy(dt)

for(i in seq_along(keys)){
keyname <- names(keys)[i]
desired <- desired[get(keyname) %in% keys[[i]]]
}

desired

问题是 - 是否有更 data.table 惯用的方法来处理这个子集?

我尝试使用CJ:dt[CJ(keys)],但它需要很长时间。

最佳答案

如何在这个掩码上构建一个掩码和过滤器dt:

dt[Reduce(`&`, Map(function(key, col) col %in% key, keys, dt)),]

关于r - 独立子集 data.table 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976785/

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