假設我有矩陣d,它是二維(列)中采樣程序的兩種不同實作(行)的結果。我想開發一個函式,從這個原始矩陣創建完全對立的繪圖。
c1 <- c(0.1, 0.6);c2 <- c(0.3, 0.8);d <- rbind(c1,c2)
# [,1] [,2]
# c1 0.1 0.6
# c2 0.3 0.8
也就是說,例如,對于第一個實作(c(0.1, 0.6))欲獲得在兩個維度,即生成此4個抽簽的鏡像(2^2)可能的組合如下:
d1_anthi = matrix(
c( d[1,1] , d[1,2],
1 - d[1,1], d[1,2],
d[1,1] , 1 - d[1,2],
1 - d[1,1], 1 - d[1,2]), nrow=2,ncol=4)
t(d1_anthi)
# [,1] [,2]
# [1,] 0.1 0.6
# [2,] 0.9 0.6
# [3,] 0.1 0.4
# [4,] 0.9 0.4
類似地,對于第二個,實作結果如下:
d2_anthi = matrix(
c( d[2,1] , d[2,2],
1 - d[2,1], d[2,2],
d[2,1] , 1 - d[2,2],
1 - d[2,1], 1 - d[2,2]), nrow=2, ncol=4)
t(d2_anthi)
# [,1] [,2]
# [1,] 0.3 0.8
# [2,] 0.7 0.8
# [3,] 0.3 0.2
# [4,] 0.7 0.2
因此,我想要的物件將鎖定是這樣的:
anthi_draws <- rbind(t(d1_anthi),t(d2_anthi))
# [,1] [,2]
# [1,] 0.1 0.6 <- original first realization
# [2,] 0.9 0.6
# [3,] 0.1 0.4
# [4,] 0.9 0.4
# [5,] 0.3 0.8 <- original second realization
# [6,] 0.7 0.8
# [7,] 0.3 0.2
# [8,] 0.7 0.2
最后,我想創建一個函式,給定一個亂數矩陣,能夠創建這個擴展的對立畫矩陣。比如下圖中我有一個三個維度的采樣,那么每次原始抽獎的總抽獎次數是 2^3 = 8。

特別是,我在創建取決于原始采樣尺寸(矩陣列)的完整組合時遇到問題。我打算使用,expand.grid()但我無法使用它創建完整的組合。歡迎任何有關創建此類功能的提示或幫助。先感謝您。
uj5u.com熱心網友回復:
你可以試試這個
do.call(
rbind,
apply(
d,
1,
function(x) {
expand.grid(data.frame(rbind(x, 1 - x)))
}
)
)
這使
X1 X2
c1.1 0.1 0.6
c1.2 0.9 0.6
c1.3 0.1 0.4
c1.4 0.9 0.4
c2.1 0.3 0.8
c2.2 0.7 0.8
c2.3 0.3 0.2
c2.4 0.7 0.2
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408927.html
標籤:
