Sé que si tengo un marco de datos con más de 1 columna, puedo usar
colnames(x) <- c("col1","col2")
cambiar el nombre de las columnas. ¿Cómo hago esto si es solo una columna? Es decir, un vector o marco de datos con una sola columna.
Ejemplo:
trSamp <- data.frame(sample(trainer$index, 10000))
head(trSamp )
# sample.trainer.index..10000.
# 1 5907862
# 2 2181266
# 3 7368504
# 4 1949790
# 5 3475174
# 6 6062879
ncol(trSamp)
# [1] 1
class(trSamp)
# [1] "data.frame"
class(trSamp[1])
# [1] "data.frame"
class(trSamp[,1])
# [1] "numeric"
colnames(trSamp)[2] <- "newname2"
# Error in names(x) <- value :
# 'names' attribute [2] must be the same length as the vector [1]

drop=TRUEargumento predeterminado de[, que hace que un objeto de "1 columna" se convierta en un vector ... y los vectores no lo tienencolnames. Un ejemplo de lo que intentaste sería muy útil.Respuestas:
intenta establecer el nombre de la segunda columna. Su objeto solo tiene una columna, por lo que el comando arroja un error. Esto debería ser suficiente:
fuente
"A,B,C,X,Y,Z"donde quiero cambiarle el nombre aYutilizartestData[379] <- "Y".Esta es una forma generalizada en la que no tiene que recordar la ubicación exacta de la variable:
Este código hace más o menos lo siguiente:
names(df)examina todos los nombres en eldf[names(df) == old.var.name]extrae el nombre de la variable que desea verificar<- 'new.var.name'asigna el nuevo nombre de variable.fuente
[names(df) == old.var.name]realidad devuelve un vector con valores verdadero / falso. Por lo tanto, tiene el potencial de cambiar varios nombres de columna si, por ejemplo, se utilizan expresiones regulares.names(df) = sub('pattern', 'replacement', names(df)). De lo contrario, intentaría establecer varias columnas con el mismo nombre.fuente
colnames(GWASDATA_RAWSELECTION)[colnames(GWASDATA_RAWSELECTION)=="^snp$"] <- "Marker"porque la columna no ha cambiado de nombre. Si hagonames(GWASDATA_RAWSELECTION)[names(GWASDATA_RAWSELECTION)=="snp"] <- "Marker"que se cambia el nombre. ¿Qué me estoy perdiendo?Esta es una vieja pregunta, pero vale la pena señalar que ahora puede usarla
setnamesdesde eldata.tablepaquete.fuente
setNamesdesde la base R.Esto también se puede hacer usando el
plyrpaquete de Hadley y larenamefunción.Puede cambiar el nombre por el nombre (sin conocer la posición) y realizar varios cambios de nombre a la vez. Después de hacer una fusión, por ejemplo, puede terminar con:
Que luego puede renombrar en un solo paso usando:
fuente
renameahora también es una función en eldplyrpaquete.Creo que la mejor manera de cambiar el nombre de las columnas es usar el paquete dplyr de esta manera:
Funciona igual para renombrar una o varias columnas en cualquier conjunto de datos.
fuente
Me gusta el siguiente estilo para cambiar el nombre de los nombres de columna del marco de datos uno por uno.
dónde
regresa por el índice de la columna específica.
fuente
which()no es necesario.Creo que la forma más conveniente de cambiar el nombre de una sola columna es usar
dplyr::rename_at:fuente
Puede usar el
rename.varsen elgdatapaquete.Esto es particularmente útil cuando tiene que cambiar más de un nombre de variable o si desea agregar o agregar texto a los nombres de las variables, luego puede hacer algo como:
Para ver un ejemplo de agregar texto a un subconjunto de nombres de variables, consulte: https://stackoverflow.com/a/28870000/180892
fuente
Tratar:
fuente
"A,B,C,X,Y,Z"donde quiero cambiarle el nombre aYutilizartestData[379] <- "Y".Es probable que esto ya esté disponible, pero estaba jugando con renombrar campos mientras buscaba una solución y probé esto por capricho. Trabajó para mis propósitos.
Editar comienza aquí ...
Esto también funciona.
fuente
renameproviene la función?Si sabe que su marco de datos tiene solo una columna, puede usar:
names(trSamp) <- "newname2"fuente
También puede probar 'upData' del paquete 'Hmisc'.
library(Hmisc)trSamp = upData(trSamp, rename=c(sample.trainer.index..10000. = 'newname2'))fuente
La pregunta del OP ha sido bien y verdaderamente respondida. Sin embargo, aquí hay un truco que puede ser útil en algunas situaciones: coincidencia parcial del nombre de la columna, independientemente de su posición en un marco de datos:
Coincidencia parcial en el nombre:
Otro ejemplo: coincidencia parcial en presencia de "puntuación":
Estos fueron ejemplos con los que tuve que lidiar hoy, pensé que valdría la pena compartirlos.
fuente
Encontré el
colnames()argumento más fácil https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/row%2Bcolnamesseleccione alguna columna del marco de datos
y renombra la columna seleccionada en orden,
verifique los nombres y los valores para asegurarse
fuente
Podemos usar
rename_withpara renombrar columnas con una función (stringrfunciones, por ejemplo).Considere los siguientes datos
df_1:Cambie el nombre de todas las variables con
dplyr::everything():Cambiar el nombre de partículas nombre con algunos
dplyrverbos (starts_with,ends_with,contains,matches, ...).Ejemplo con
.(xvariables):Cambiar el nombre de la clase con muchas funciones de prueba de clase, como
is.integer,is.numeric,is.factor...Ejemplo con
is.integer(y):La advertencia:
No es relevante, ya que es solo una inconsistencia
seq_along(.)con la función de reemplazo.fuente
Simplemente agregaría una nueva columna al marco de datos con el nombre que quiero y obtendría los datos de la columna existente. Me gusta esto:
¡entonces quito la vieja columna! Me gusta esto:
¡Este código puede parecer tonto! Pero funciona perfectamente ...
fuente
Simplemente cambiaría el nombre de una columna al conjunto de datos con el nuevo nombre que quiero con el siguiente código: nombres (conjunto de datos) [index_value] <- "new_col_name"
fuente
fuente