-1
我有一個名爲results2的8X11矩陣的數組,我試圖迭代地做兩件事(〜1000次)。在循環之後更新矩陣和方差
- 隨機在矩陣中隨機選擇4個單元,併爲該選擇添加或減去一個值。這些值需要以這種方式添加(+, - , - ,+)或這種方式( - ,+,+, - )。進行加/減操作後,8X11矩陣應該對其進行更新修改,並重復該過程。
- 計算並更新每個循環後8X11矩陣中每個單元的方差,並將其保存到一個向量中。最後,應該有88個向量,其中有一個方差值 - 對於矩陣中的每個單元格都應該有1個向量。
我至今是:
r2 <- results[2,,]
dat <- r2[sample(prod(dim(r2)),4)] #randomly samples from the 8X11 matrix
dat <- as.matrix(dat)
sampleRand <- function(dat) {
x_min = seq(0,min(sample(dat,4)), by=0.01) #random sampling for 4 cells and finds range from 0 to the min of that sample
x.min = sample(x_min,1) # randomly selects the min to use to add or subtract by
flip = sample(0:1,1,rep=T) #if flip is = 1 then do +,-,-,+ if flip = 0 then do -,+,+,-
if(flip > 0) {
dat[1,1] = dat[1,1] + x.min
dat[2,1] = dat[2,1] - x.min
dat[3,1] = dat[3,1] - x.min
dat[4,1] = dat[4,1] + x.min
if (dat[1,1] < 0 ||
dat[2,1] < 0 ||
dat[3,1] < 0 ||
dat[4,1] < 0)
{ print("FALSE")
}
} else if(flip == 0) {
dat[1,1] = dat[1,1] - x.min
dat[2,1] = dat[2,1] + x.min
dat[3,1] = dat[3,1] + x.min
dat[4,1] = dat[4,1] - x.min
} else if (dat[1,1] < 0 ||
dat[2,1] < 0 ||
dat[3,1] < 0 ||
dat[4,1] < 0)
{ print("FALSE")
}
}
與上面的代碼(除了醜)的問題是,我從8X11矩陣中選擇出來的價值觀和修改它們。我不直接在8X11矩陣中修改它們。我怎樣才能做到這一點?
另外,如何計算8X11矩陣中每個單元格的方差,並在每次迭代後爲該單元格更新方差值?理想情況下,這個方差值將被保存爲它自己的矢量。所以最後應該有88個矢量各有一個方差值。
謝謝。
順便說一句,結果只是一個13000矩陣,每個8X11的3D陣列。在結果矩陣#2的一個例子是:
results[2,,]
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0.1108446 0.09536505 0.6639205 0.5750731 0.3526045 0.5534660 0.8835108
[2,] 0.2762736 0.16588542 0.5556568 0.6600122 0.4832881 0.4584993 1.0334293
[3,] 0.1313672 0.00000000 0.5799588 0.5835488 0.7482058 0.5714304 0.8910430
[4,] 0.1815236 0.50803010 0.4826228 0.7011605 0.5161530 0.3057819 0.9230045
[5,] 0.1363721 0.77955695 0.5983714 0.5894578 0.5964733 0.8284053 0.7949902
[6,] 0.2058215 0.54171493 0.3260954 0.6145317 0.5241678 1.1855122 0.9472204
[7,] 0.1398614 0.62403905 0.5403183 0.5141039 0.6353840 0.8727070 0.5891284
[8,] 0.1546674 0.54992965 0.8204701 0.6335292 0.5297555 0.9809781 0.6295093
[,8] [,9] [,10] [,11]
[1,] 0.9334862 0.7306472 0.6472618 1.0034951
[2,] 0.6672198 0.4258317 0.6736558 0.9045543
[3,] 0.7593824 0.5955351 0.5679406 1.0567393
[4,] 0.6764162 0.8904367 0.6936535 0.9122004
[5,] 0.8040301 0.6321197 0.3979384 0.9446451
[6,] 0.6828278 0.7215308 0.8486158 0.8146954
[7,] 0.7100341 0.6410416 1.2111213 0.9692271
[8,] 0.6010656 0.7648455 0.8935872 0.6057215
您能否爲我們提供一個小型的練習數據集?什麼是「結果」?另外,儘可能簡化代碼將有助於獲得更快的答案。 – kdauria
凱文,我加了一個例子。這是儘可能簡化,我可以得到它。 – user3067923