在R中,如何获得某些向量值的所有可能组合?

问题描述:

背景:我有一个需要一些参数的函数。我想要获得所有可能参数组合的功能结果。在R中,如何获得某些向量值的所有可能组合?

一个简单的例子:

f <- function(x, y) { return paste(x, y, sep=",")} 
colors = c("red", "green", "blue") 
days = c("Monday", "Tuesday") 

我想我的结果看起来像

 color day   f  
[1,] "red" "Monday" "red,Monday" 
[2,] "red" "Tuesday" "red,Tuesday" 
[3,] "green" "Monday" "green,Monday" 
[4,] "green" "Tuesday" "green,Tuesday" 
[5,] "blue" "Monday" "blue,Monday" 
[6,] "blue" "Tuesday" "blue,Tuesday" 

我的想法是创建一个矩阵的列colorday,利用现有载体colors填充和days,为结果初始化一个空列,然后使用循环每个矩阵行调用f一次,并将结果写入最后一列。但我不知道如何从colorsdays向量轻松生成矩阵。我试着搜索它,但是我得到的所有结果都是针对combn函数,它可以完成不同的操作。

在这个简化的例子中,colorsdays是因素,但在我的真实例子中,情况并非如此。该函数的一些参数是整数,所以我的实际向量看起来更像1, 2, 3,函数将要求它作为数字传递给它。所以请不要依赖因子水平的解决方案,如果它们不能以某种方式用于整数。

+0

相关:http://*.com/questions/3993546/how-to-generate-a-matrix-of-combination –

+0

[查找三个字符串的所有可能组合]可能的重复(http://*.com/questions/6254533/finding-all-possible-combinations三字符串) –

我觉得你只是想expand.grid

> colors = c("red", "green", "blue") 
> days = c("Monday", "Tuesday") 
> expand.grid(colors,days) 
    Var1 Var2 
1 red Monday 
2 green Monday 
3 blue Monday 
4 red Tuesday 
5 green Tuesday 
6 blue Tuesday 

而且,如果你想在同一行中指定列名:

> expand.grid(color = colors, day = days) 
    color  day 
1 red Monday 
2 green Monday 
3 blue Monday 
4 red Tuesday 
5 green Tuesday 
6 blue Tuesday 
+5

而且,如果你想特别指出fy在同一行中的列名称,“expand.grid(color = colors,day = days)' –