Sto lavorando su un frame di dati che non ha rilevamenti codificati con "<". A volte c'è uno spazio dopo "<" ea volte non ad es. '< 2' o '< 2'. Mi piacerebbe rimuovere ogni occorrenza dello spazio.Sostituisci tutte le occorrenze di una stringa in un frame di dati
Esempio:
data <- data.frame(name = rep(letters[1:3], each = 3), var1 = rep('< 2', 9), var2 = rep('<3', 9))
name var1 var2
1 a < 2 <3
2 b < 2 <3
3 c < 2 <3
Questo è dove ho avuto modo di:
posso estrarre tutti i valori e rendere le nuove stringhe, ma non riesco a rimetterli nella cornice di dati.
index <- str_detect(unlist(data), '<')
index <- matrix(index, nrow = 3)
data[index]
#[1] "< 2" "< 2" "< 2" "<3" "<3" "<3"
replacements <- str_replace_all(data[index], "<[ ]+","<")
replacements
#[1] "<2" "<2" "<2" "<3" "<3" "<3"
data[index] <- replacements
#Error in `[<-.data.frame`(`*tmp*`, index, value = c("<2", "<2", "<2", :
# unsupported matrix index in replacement
Usa 'lapply' invece - salverà la coercizione su una matrice. – thelatemail
'data.frame (lapply (dati, funzione (x) {gsub (" <\\ s * "," <", x)}))' –
Ciò trasformerà l'oggetto in un elenco, quindi è necessario 'dati <- as.data.frame (data) 'dopo quello. O ovviamente la soluzione nel commento sopra, da Avinash Raj. Ultima cosa: è il 2017, quindi scriviamo 'dati <- data %>% as.data.frame()' –