繁体   English   中英

将R中的2个列表组合到data.table(并重复所有值)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM