我想创建一个交叉连接 data.table
在一个函数中。说,我们有一个向量 vals <- c("yes", "no")
.现在这个有效:CJ(vals, vals)
.但是,根据函数输入,我可能需要创建例如CJ(vals, vals, vals, vals)
反而。有点像
vals <- c("yes", "no")
n <- 4
CJ(rep(vals, n))
显然行不通。如何以灵活的方式指定交叉连接的向量?
最佳答案
您可以使用 ...
来引用从调用函数传递下来的参数...?
require( data.table )
f <- function( ... ){
CJ(...)
}
f( c(1:2) , c(3:4) )
# V1 V2
#1: 1 3
#2: 1 4
#3: 2 3
#4: 2 4
编辑这个怎么样?
do.call(CJ, replicate(n, vals, simplify=FALSE))
# V1 V2 V3 V4
# 1: no no no no
# 2: no no no yes
# 3: no no yes no
# 4: no no yes yes
# 5: no yes no no
# 6: no yes no yes
# 7: no yes yes no
# 8: no yes yes yes
# 9: yes no no no
# 10: yes no no yes
# 11: yes no yes no
# 12: yes no yes yes
# 13: yes yes no no
# 14: yes yes no yes
# 15: yes yes yes no
# 16: yes yes yes yes
关于r - 在函数内交叉连接 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365685/