Cambiar los nombres de las columnas de un marco de datos

Resuelto Son asked hace 54 años • 0 respuestas

Tengo un marco de datos llamado "nuevo precio" (ver más abajo) y quiero cambiar los nombres de las columnas en mi programa en R.

> newprice
   Chang.  Chang.   Chang.
1     100       36      136
2     120      -33       87
3     150       14      164

De hecho esto es lo que estoy haciendo:

names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice") 

No he puesto esto en un bucle porque quiero que cada nombre de columna sea diferente como puedes ver.

Cuando pego mi programa en la consola R, este es el resultado que me da:

> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"

También intenté usar la c()función, por ejemplo c("premium"), en lugar de la paste()función, pero fue en vano.

¿Alguien podría ayudarme a resolver esto?

Son avatar Jan 01 '70 08:01 Son
Aceptado

Utilice la colnames()función:

R> X <- data.frame(bad=1:3, worse=rnorm(3))
R> X
  bad     worse
1   1 -2.440467
2   2  1.320113
3   3 -0.306639
R> colnames(X) <- c("good", "better")
R> X
  good    better
1    1 -2.440467
2    2  1.320113
3    3 -0.306639

También puedes subconjuntos:

R> colnames(X)[2] <- "superduper"
Dirk is no longer here avatar May 21 '2011 11:05 Dirk is no longer here

Yo uso esto:

colnames(dataframe)[which(names(dataframe) == "columnName")] <- "newColumnName"
Matheus Abreu avatar Mar 17 '2014 18:03 Matheus Abreu

El error es causado por las "comillas inteligentes" (o como se llamen). La lección aquí es: "no escriba su código en un 'editor' que convierta comillas en comillas tipográficas".

names(newprice)[1]<-paste(“premium”)  # error
names(newprice)[1]<-paste("premium")  # works

Además, no es necesario paste("premium")(la llamada a pastees redundante) y es una buena idea colocar espacios <-para evitar confusiones (por ejemplo, x <- -10; if(x<-3) "hi" else "bye"; x).

Joshua Ulrich avatar May 21 '2011 12:05 Joshua Ulrich

Intentar:

names(newprice)[1] <- "premium"
Jamie avatar May 21 '2011 11:05 Jamie