我不確定排列是否正確。我想給定一組n個向量的(即[1,2]
,[3,4]
和[2,3]
)置換所有這些,得到的R中多個向量的組合
[1,3,2],[1,3,3],[1,4,2],[1,4,3],[2,3,2] etc.
輸出有R中的操作,將做到這一點?
我不確定排列是否正確。我想給定一組n個向量的(即[1,2]
,[3,4]
和[2,3]
)置換所有這些,得到的R中多個向量的組合
[1,3,2],[1,3,3],[1,4,2],[1,4,3],[2,3,2] etc.
輸出有R中的操作,將做到這一點?
這是在列表中存儲的載體,並使用do.call()
到一個合適的函數調用爲您安排一個有用的情況。 expand.grid()
是您想要的標準功能。但是,這樣你就不必鍵入出或個人命名的載體,嘗試:
> l <- list(a = 1:2, b = 3:4, c = 2:3)
> do.call(expand.grid, l)
a b c
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3
然而,我所有的聰明,事實證明,expand.grid()
接受一個列表:
> expand.grid(l)
a b c
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3
+1爆炸和詛咒。你偷了我的答案。 ;-) – Andrie
@Andrie多麼尷尬!試圖成爲聰明的人有它的優勢。雖然我不配得到這裏的接受。我會補充一些upvotes。 –
這就是expand.grid
所做的。
從幫助頁面引用:從提供的矢量或因子的所有組合創建數據框。結果是一個data.frame
,每個組合都有一行。
expand.grid(
c(1, 2),
c(3, 4),
c(2, 3)
)
Var1 Var2 Var3
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3
+1爆炸和詛咒,你打敗了我;-) –
嗨,我正在嘗試這種方法,但得到的消息:「錯誤rep.int(rep.int(seq_len(nx),rep.int( rep.fac,nx)),orep): 矢量太大「有沒有其他方法可以做到這一點? – user1375871
@ user1375871你的矢量有多大? –
我相信你是描述組合。排列與組合類似,但排列的順序很重要。 – Andrie