Home > Blockchain >  Rename a column with R
Rename a column with R

Time:07-17

I'm trying to rename a specific column in my R script using the colnames function but with no sucess so far.

I'm kinda new around programming so it may be something simple to solve.

Basically, I'm trying to rename a column called Reviewer Overall Notes and name it Nota Final in a data frame called notas with the codes:

colnames(notas$`Reviewer Overall Notes`) <- `Nota Final`

and it returns to me:

> colnames(notas$`Reviewer Overall Notes`) <- `Nota Final`
Error: object 'Nota Final' not found

I also found in [this post][1] a code that goes:

colnames(notas) [13] <- `Nota Final`

But it also return the same message.

What I'm doing wrong?

Ps:. Sorry for any misspeling, English is not my primary language.

CodePudding user response:

Why using backtick? Use the normal quotation mark.

colnames(notas) [13] <- 'Nota Final'

This seems to matter:

df <- data.frame(a = 1:4)
colnames(df)[1] <- `b`

Error: object 'b' not found

CodePudding user response:

You probably want

colnames(notas)[colnames(notas) == "Reviewer Overall Notes"] <- "Nota Final"

(@Whatif's answer shows how you can do this with the numeric index, but probably better practice to do it this way; working with strings rather than column indices makes your code both easier to read [you can see what you're renaming] and more robust [in case the order of columns changes in the future])

Alternatively,

notas <- notas %>% dplyr::rename(`Nota Final` = `Reviewer Overall Notes`)

Here you do use back-ticks, because tidyverse (of which dplyr is a part) prefers its arguments to be passed as symbols rather than strings.

CodePudding user response:

You should not use single or double quotes in naming:

I have learned that we should not use space in names. If there are spaces in names (it works and is called a non-syntactic name: And according to Wickham Hadley's description in Advanced R book this is due to historical reasons:

"You can also create non-syntactic bindings using single or double quotes (e.g. "_abc" <- 1) instead of backticks, but you shouldn’t, because you’ll have to use a different syntax to retrieve the values. The ability to use strings on the left hand side of the assignment arrow is an historical artefact, used before R supported backticks."

To get an overview what syntactic names are use ?make.names:

make.names("Nota Final")
[1] "Nota.Final"
  •  Tags:  
  • r
  • Related