来自两个(或更多)向量的所有元素的独特组合

我试图在R中创build两个不同大小向量的所有元素的独特组合。

例如,第一个向量是

> a <- c("ABC", "DEF", "GHI") 

第二个是当前存储为string的date

 > b <- c("2012-05-01", "2012-05-02", "2012-05-03", "2012-05-04", "2012-05-05") 

我需要创build一个这样的两列的数据框

 > data ab 1 ABC 2012-05-01 2 ABC 2012-05-02 3 ABC 2012-05-03 4 ABC 2012-05-04 5 ABC 2012-05-05 6 DEF 2012-05-01 7 DEF 2012-05-02 8 DEF 2012-05-03 9 DEF 2012-05-04 10 DEF 2012-05-05 11 GHI 2012-05-01 12 GHI 2012-05-02 13 GHI 2012-05-03 14 GHI 2012-05-04 15 GHI 2012-05-05 

所以基本上,我正在寻找一个独特的组合,通过考虑一个向量(a)与第二个向量(b)的所有元素并列的所有元素。

一个理想的解决scheme将推广到更多的input向量。


也可以看看:
如何生成组合matrix

这也许是你以后的事情

 > expand.grid(a,b) Var1 Var2 1 ABC 2012-05-01 2 DEF 2012-05-01 3 GHI 2012-05-01 4 ABC 2012-05-02 5 DEF 2012-05-02 6 GHI 2012-05-02 7 ABC 2012-05-03 8 DEF 2012-05-03 9 GHI 2012-05-03 10 ABC 2012-05-04 11 DEF 2012-05-04 12 GHI 2012-05-04 13 ABC 2012-05-05 14 DEF 2012-05-05 15 GHI 2012-05-05 

如果由此产生的顺序不是你想要的,你可以事后sorting。 如果您将参数命名为expand.grid ,它们将成为列名称:

 df = expand.grid(a = a, b = b) df[order(df$a), ] 

expand.grid概括为任意数量的input列。