[英]How Do I Generate All Possible Combinations of the Variables In A Model In R?
[英]In R, how do I get all possible combinations of the values of some vectors?
背景:我有一個需要一些參數的函數。 我想要所有可能的參數組合的函數結果。
一個簡化的例子:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.