[英]Combining 2 lists in R into data.table (and repeating all values)
我在R中有2个数组。我想将它们组合成data.table(或data.frame),以便为数组1中的每个值与数组2中的每个值组合创建一行。
例如,如果我有:
Array1 <- c("A", "B", "C")
Array2 <- c(1, 2, 3)
我希望输出data.frame看起来像:
> DF
Array1 Array2
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 B 3
7 C 1
8 C 2
9 C 3
有谁知道如何做到这一点?
data.table
有一个函数, CJ
,它与expand.grid
非常相似,并产生一个键控data.table
(在高级data.table
连接中非常data.table
):
CJ(a = Array1, b = Array2)
# a b
#1: A 1
#2: A 2
#3: A 3
#4: B 1
#5: B 2
#6: B 3
#7: C 1
#8: C 2
#9: C 3
key(CJ(a = Array1, b = Array2))
#[1] "a" "b"
显而易见的选择:
expand.grid(Array1,Array2)
如果您需要变量名称:
expand.grid(Array1=Array1,Array2=Array2)
结果:
# Array1 Array2
#1 A 1
#2 B 1
#3 C 1
#4 A 2
#5 B 2
#6 C 2
#7 A 3
#8 B 3
#9 C 3
如果你特别需要data.table
输出,@ mnel建议你可以这样做:
out <- setDT(expand.grid(Array1=Array1,Array2=Array2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.