Devo eseguire un codice simile su colonne in una matrice di grandi dimensioni.Come posso modificare il mio codice per migliorare la mia velocità di elaborazione
set.seed(1)
my_vector <- runif(10000)
my_sums <- NULL
for (l in 1:length(my_vector)) {
current_result <- my_vector[ my_vector < runif(1) ]
my_sums[l] <- sum(current_result)
}
head(my_sums)
# [1] 21.45613 2248.31463 2650.46104 62.82708 11.11391 86.21950
Sys.time
risultati:
user system elapsed
1.14 0.00 1.14
tutte le idee su come migliorare le prestazioni?
ho avuto una piccola spinta nel tempo con 'replicando (1E4, sum (my_vector [my_vector
ho anche avuto un miglioramento sul vostro loop allocando la giusta dimensione per 'my_sums' in anticipo. 'my_sums <- numeric (10000)' –
È sempre una cattiva idea far crescere gli oggetti in un loop. Evita questo quando puoi, e qui, come dimostra Pierre, è possibile farlo. – lmo