Questo dovrebbe essere piuttosto semplice ma anche dopo aver controllato tutta la documentazione e gli esempi in linea, non capisco.Uso dell'interruttore() in R per sostituire i valori vettoriali
Mi piacerebbe usare switch() per sostituire i valori di un vettore di caratteri.
un falso, estremamente semplice, ad esempio riproducibile:
test<-c("He is", "She has", "He has", "She is")
Diciamo che voglio assegnare "1" per le frasi tra cui il verbo "essere" e "2" per le frasi tra cui il verbo "avere ". Quanto segue non funziona: messaggio
test<-switch(test,
"He is"=1,
"She is"=1,
"He has"=2,
"She has"=2)
Errore:
+ + + + Error in switch(test, `He is` = 1, `She is` = 1, `He has` = 2, `She has` = 2) :
EXPR must be a length 1 vector
penso ESPR è infatti una lunghezza di 1 vettore, quindi cosa c'è di sbagliato?
ho pensato che forse R caratteri come sostituti del previsto, ma né l'interruttore di avvolgimento() in un "as.integer", né i seguenti lavori:
test<-switch(test,
"He is"="1",
"She is"="1",
"He has"="2",
"She has"="2")
Forse non Vectorize, e che dovrei fare una ciclo continuo? È così? Sarebbe deludente, considerando la forza di R la vettorizzazione. Grazie in anticipo!
Vector "test" è di lunghezza 4. Non può funzionare. Vedi con 'test <-" He is "'. –
Stai cercando di raggiungere questo? Codice <- c ("Lui è" = 1, "Lei è" = 1, "Lui ha" = 2, "Lei ha" = 2); codice [Test] '? – ExperimenteR
Wow @ExperimenteR, che è elegante ... Non sapevo che se selezionassi gli oggetti di un vettore numerico con un attributo nomi usando un carattere, R userebbe l'attributo nomi per far corrispondere i numeri del vettore numerico al mio personaggio vettore. Questa è la mia soluzione preferita, ma non posso sceglierla come risposta perché la domanda era come usare switch() correttamente. Thumbs up tho – torwart