seleccionar - Introduzca nuevos nombres de columna como cadena en la función de cambio de nombre de dplyr
funcion mutate en r (1)
Creo que esto es lo que estabas buscando. Es el uso de rename_
como sugirió @Henrik, pero el argumento tiene un nombre interesante, digamos,
> myFunc <- function(df, col){
+ new <- paste0(col, ''_1'')
+ out <- dplyr::rename_(df, .dots=setNames(list(col), new))
+ return(out)
+ }
> myFunc(data.frame(x=c(1,2,3)), "x")
x_1
1 1
2 2
3 3
>
Tenga en cuenta el uso de setNames
para usar el valor de new como nombre en la lista.
Las funciones de cambio de nombre de dplyr requieren que el nuevo nombre de columna se pase como nombres de variables sin comillas. Sin embargo, tengo una función en la que el nombre de la columna se construye pegando una cadena en un argumento pasado y también lo es una cadena de caracteres.
Por ejemplo digamos que tenía esta función.
myFunc <- function(df, col){
new <- paste0(col, ''_1'')
out <- dplyr::rename(df, new = old)
return(out)
}
Si corro esto
df <- data.frame(a = 1:3, old = 4:6)
myFunc(df, ''x'')
yo obtengo
a new
1 1 4
2 2 5
3 3 6
Mientras que quiero que la columna ''nueva'' sea el nombre de la cadena que construí (''x_1''), es decir
a x_1
1 1 4
2 2 5
3 3 6
¿Hay alguna forma de hacer esto?