背景:我有一个带一些参数的函数.我想为所有可能的参数组合提供函数的结果.
一个简化的例子:
f <- function(x, y) { return paste(x, y, sep=",")}
colors = c("red", "green", "blue")
days = c("Monday", "Tuesday")
Run Code Online (Sandbox Code Playgroud)
我希望我的结果看起来像
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"
Run Code Online (Sandbox Code Playgroud)
我的想法是创建一个带有列的矩阵,color并day使用现有向量填充它,colors并days为结果初始化一个空列,然后使用循环为每个矩阵行调用f一次,并将结果写入最后一列.但我不知道如何轻松地生成从基体colors和days载体.我尝试搜索它,但我得到的所有结果都是针对该combn功能的,它做了不同的事情.
在这个简化的案例中,colors和days是因素,但在我的实例中,情况并非如此.函数的一些参数是整数,所以我的真实矢量可能看起来更像1, 2, 3,并且函数将要求它作为数字传递给它.所以请不要依赖于因子级别的解决方案,如果它们不能以某种方式用于处理整数.
jor*_*ran 23
我想你只想要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
Run Code Online (Sandbox Code Playgroud)
并且,如果要在同一行中指定列名称:
> 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
Run Code Online (Sandbox Code Playgroud)