我在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
有谁知道怎么做?
答案 0 :(得分:2)
data.table
有一个函数CJ
,它与expand.grid
非常相似,并生成一个键控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"
答案 1 :(得分:1)
显而易见的选择:
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))