Ho un problema semplice, ma non ho potuto cogliere la logica per superarlo.NA non sono consentiti nelle assegnazioni con subscript
Ho i vettori numerici con NA e voglio applicare un'operazione dipendente da condizione.
Un semplice esempio simile al mio problema è:
x <- c(1,3,5,7,NA,2,4,6)
x[x>=5] <- c(1:8)[x>=5]
x[x<5] <- (c(1:8)*10)[x<5]
restituisce l'errore "AN non sono ammessi nelle assegnazioni indicizzate", quindi mi piacerebbe sapere che cosa sarebbe una soluzione ragionevole per questo, dato che eseguire ogni attribuzione funziona separatamente come previsto.
desidero avere il risultato atteso:
[1] 10 20 3 4 NA 60 70 8
Preferibilmente senza dover effettuare un ciclo, in quanto questa operazione è già in funzione per la modellazione nullo con un sacco di iterazioni che sta prendendo età.
Grazie in anticipo, Leonardo
Questo è molto interessante. Sembra che non sia possibile combinare numeri interi con 'NA' mentre sottotitoli e assegnando solo se si ha più di un valore su RHS ... I.e. 'x [c (NA, 1)] <- 100' e ' x [NA] <- 100' funzioneranno entrambi, mentre 'x [c (NA, 1)] <- 100: 101' o ' x [NA] <- 100: 101' non sarà –
Questa è una domanda preziosa in quanto arriva a quel messaggio di errore. Ma è importante notare che anche se il tuo codice funziona senza errori causati da NA, non produrrebbe quel risultato atteso. La riga 2 del tuo codice sovrascriverebbe i valori originali di 5 e 7 utilizzati per prevedere il risultato 3 e 4 sopra (anziché 30 e 40) e sarebbero 3 e 4 per la linea temporale 3, causando per diventare 30 e 40. Prova: 'x [x> = 5 &! is.na (x)] <- c(1:8)[x> = 5 &! is.na (x)]; x [x <5 &! Is.na (x)] <- (c (1: 8) * 10) [x <5 &! Is.na (x)] ' –