gpt4 book ai didi

r - 将列列表作为向量传递给 data.table 的 CJ

转载 作者:行者123 更新时间:2023-12-04 09:34:52 27 4
gpt4 key购买 nike

我有以下代码:

main_cols <- c('num', 'let')
dt <- data.table(num = 1:5, let = letters[1:5])
dt

new_dt <- dt[CJ(num = num
, let = let
, unique = TRUE)
, on = main_cols
]
head(new_dt, 10)

问题是:我想将要交叉连接的列作为向量传递。如何在 CJ 函数中“解压”main_cols?谢谢。

最佳答案

我想你会想要使用 do.call,正如@AnandaMahto 建议的那样:

m = dt[, do.call(CJ, .SD), .SDcols=main_cols]
dt[m, on=main_cols]

你也可以这样创建m:

m = do.call(CJ, dt[,main_cols,with=FALSE])

如果列中有重复值,请使用 unique 选项来 CJ:

m = dt[, do.call(CJ, c(.SD, unique=TRUE)), .SDcols=main_cols]
# or
m = do.call(CJ, c(dt[,main_cols,with=FALSE], unique=TRUE))

关于r - 将列列表作为向量传递给 data.table 的 CJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750437/

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