names(mydat)[c(name)]<-c("newname")
A partir de esto, sé que el nombre de columna / variable "nombre" del marco de datos mydat se reemplaza con "nombre nuevo".
Mi pregunta es si, quiero hacer esto por un bucle para tener algo como:
newname1 newname2 newname3 newname4 y así sucesivamente, ¿cómo lo hago?
Esto es lo que funcionó y no funcionó:
for(i in 1:4){
names(mydat)[c(name)]<-c("newname"i)
}
¿Hay alguna manera de codificar esto? Muchas gracias a todos los que pudieron ser de ayuda. Owusu Isaac

ugly_vars <- names(dplyr::select(df, starts_with("abcde_")))names(ESM_df[ugly_vars]) <- str_c("abc_", 1:length(ugly_vars))Respuestas:
La solución más obvia sería cambiar su código for loop con lo siguiente:
Pero necesita aclarar cuál es su variable
name. Por el momento, este bucle hará 4 cambios de nombre de la columna individual.En general, si los nombres que desea cambiar están en vector, este es un procedimiento de subconjunto estándar:
fuente
Intente usar
sprintfopaste, de esta manera:Además, tenga en cuenta que el
names(mydat)[c(name)]es un sin sentido más;c(name)es equivalente a escribir solonamey significa "obtener el valor de la variable llamadaname'; el corchete extraerá al menos elementos denames(mydat)pero solo si lanamevariable contiene un índice numérico o booleano.Si desea reemplazar columnas llamadas
nameconname1, name2, ..., nameN, use algo como esto:EDITAR: Bueno, si solo desea eliminar nombres de columna duplicados, hay una manera aún más fácil; R tiene una
make.namesfunción que soluciona este problema; se puede usar así:Aún más corto, lo mismo solo se puede obtener escribiendo:
fuente
greplestaría bien hacer el trabajo más general.Tuve el mismo problema y lo resolví con este código:
fuente