在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"
我的想法是创建一个矩阵的列color
和day
,利用现有载体colors
填充和days
,为结果初始化一个空列,然后使用循环每个矩阵行调用f一次,并将结果写入最后一列。但我不知道如何从colors
和days
向量轻松生成矩阵。我试着搜索它,但是我得到的所有结果都是针对combn
函数,它可以完成不同的操作。
在这个简化的例子中,colors
和days
是因素,但在我的真实例子中,情况并非如此。该函数的一些参数是整数,所以我的实际向量看起来更像1, 2, 3
,函数将要求它作为数字传递给它。所以请不要依赖因子水平的解决方案,如果它们不能以某种方式用于整数。
答
我觉得你只是想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)' –
相关:http://stackoverflow.com/questions/3993546/how-to-generate-a-matrix-of-combination –
[查找三个字符串的所有可能组合]可能的重复(http://stackoverflow.com/questions/6254533/finding-all-possible-combinations三字符串) –