Ich simuliere Daten und füllen eine Matrix mit einer For-Schleife in R. Derzeit läuft der Loop langsamer als ich es möchte. Ich habe einige Arbeit geleistet, um einige der Variablen zu vektorisieren, um die Schleifengeschwindigkeit zu verbessern, aber es dauert noch einige Zeit. Ich glaube, dass der Teil der Schleife Dinge verlangsamt. Ich habe die Füllmatrizen effizienter untersucht, konnte aber mein aktuelles Problem nicht lösen. Schließlich wird dies als Teil einer glänzenden App verwendet, so dass alle von mir zugewiesenen Variablen leicht unterschiedliche Werte zugewiesen werden können.Beschleunigen Sie für die Schleife Daten zu Matrix in R
Jeder Ratschlag, die Schleife zu beschleunigen oder diese Schleife effizienter zu schreiben, würde sehr geschätzt werden. Hier
ist die Schleife:
#These variables are all specified because they need to change with different simulations
num.sims <- 20
time <- 50
mat <- matrix(nrow = num.sims, ncol = time)
x <- 1000
init <- 0.5*x
vec <- vector(length = x)
ratio <- 1
freq <- -0.4
freq.vec <- numeric(nrow(mat))
## start a loop
for (j in 1:num.sims) {
vec[1:init] <- 1; vec[(init+1):x] <- 2
year <- 2
freq.vec[j] <- sum(vec==1)/x
for (i in 1:(x*(time-1))) {
freq.1 <- sum(vec==1)/x; freq.2 <- 1 - freq.1
fit.ratio <- exp(freq*(freq.1-0.5) + log(ratio))
Pr.1 <- fit.ratio*freq.1/(fit.ratio*freq.1 + freq.2)
vec[ceiling(x*runif(1))] <- sample(c(1,2), 1, prob=c(Pr.1,1-Pr.1))
## record data
if (i %% x == 0) {
mat[j,year] <- sum(vec==1)/x
year <- year + 1
}}}