首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列列表传递给data.table的CJ作为向量

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

Stack Overflow用户
提问于 2016-01-12 17:45:15
回答 1查看 1.6K关注 0票数 3

我有以下代码:

代码语言:javascript
复制
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)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 17:58:43

我认为您应该使用do.call,正如@AnandaMahto建议的那样:

代码语言:javascript
复制
m = dt[, do.call(CJ, .SD), .SDcols=main_cols]
dt[m, on=main_cols]

您还可以以这种方式创建m

代码语言:javascript
复制
m = do.call(CJ, dt[,main_cols,with=FALSE])

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

代码语言:javascript
复制
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))
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34750437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档