Ho un vettore "a" con valori interi, alcuni dei quali potrebbero essere diventati 0 a causa di altre parti del codice in esecuzione. Vorrei sostituire le occorrenze di 0 in questo vettore con un campione casuale di un altro vettore "b" che ho. Tuttavia, se ci sono più valori 0 in "a", mi piacerebbe che fossero tutti campioni diversi da "b". Così, per esempio:Sostituzione di valori specifici nel vettore con campioni diversi da un altro vettore
a <- c(1, 2, 3, 0, 0, 0)
b <- 1:100
Vorrei ultimi tre 0 valori di "a" da sostituire con valori casuali entro "b", ma vorrebbe evitare di utilizzare 1, 2, o 3. Sono già in a.
Attualmente, sto usando un ciclo while, quindi:
while(0 %in% a) {
s = sample(1, b)
while(s %in% a) {
s = sample(1, b)
}
a[a==0][1] = s
}
Esiste un modo migliore per fare questo? sembra che questo doppio ciclo possa richiedere molto tempo per essere eseguito.
Grazie! È molto più pulito! – user5811685