Le funzioni di ridenominazione di dplyr richiedono che il nuovo nome di colonna venga passato come nomi di variabili non quotate. Tuttavia ho una funzione in cui il nome della colonna è costruito incollando una stringa su un argomento passato e così è una stringa di caratteri.Immettere i nomi di nuove colonne come stringa nella funzione di ridenominazione di dplyr
Per esempio dire che ho avuto questa funzione
myFunc <- function(df, col){
new <- paste0(col, '_1')
out <- dplyr::rename(df, new = old)
return(out)
}
Se corro questo
df <- data.frame(a = 1:3, old = 4:6)
myFunc(df, 'x')
ottengo
a new
1 1 4
2 2 5
3 3 6
Mentre io voglio la colonna 'nuovo' per essere il nome della stringa che ho costruito ('x_1'), ovvero
a x_1
1 1 4
2 2 5
3 3 6
Esiste comunque?
Dalla [annuncio di 'dplyr 0.3'] (http://blog.rstudio.org/2014/10/13/dplyr-0-3-2/):" Ora puoi programmare con 'dplyr' - ogni funzione che utilizza la valutazione non standard (NSE) ha anche un gemello di valutazione standard (SE) che termina con '_' [...] La versione SE di ogni funzione ha argomenti simili, ma devono essere esplicitamente" quotati ". " Quindi, controlla se 'rename_' potrebbe essere utile qui. – Henrik
Grazie, è utile sapere ma in questo caso non cambia nulla. Funzionerebbe se la colonna che stavo passando fosse il vecchio nome della colonna, ma cambiando la funzione sopra per usare rename_ (e mettendo il vecchio tra virgolette) restituisce sempre lo stesso – user1165199
@ user1165199 Farei 'colnames (df) [colnames (df)% in% "old"] <- paste0 ("x", "_") '(in una funzione se necessario) in quanto è in grado di sostituire facilmente un vettore di nomi. – akrun