Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rename list items

I have the following list listaValores

listaValores <- c()
  for(valores in 1:numRepeticion){
    listaValores <- c(listaValores, readWorksheetFromFile(file = file.read,        
                        sheet = sheet.read, 
                        startRow = startRow.read+(12*(valores-1)),
                        startCol = startCol.read[i], 
                        endRow = startRow.read+((12*valores)-1) ,
                        endCol = startCol.read[i], header = FALSE))  
    }

which returns:

$Col1
 [1] 32824 35646 34650 29328 27376 28548 35363 34740 49181 57960 55550 50626

$Col1
 [1] 52610 55085 58576 51300 50968 58104 56585 38273 54216 59043 67487 58067

$Col1
 [1] 59142 68593 77510 73434 83545 83483 79635 69269 85703 73080

How to renames it's elements to 2014, 2015, 2016?

like image 868
Iván Rodas Padilla Avatar asked Dec 14 '16 09:12

Iván Rodas Padilla


People also ask

How do I name an item in a list in R?

The list can be created using list() function in R. Named list is also created with the same function by specifying the names of the elements to access them. Named list can also be created using names() function to specify the names of elements after defining the list.

How do I rename something in R?

To rename a file in R, use the file. rename() function. The file. rename() method will rename files, and it can take a vector of both from and to names.


2 Answers

Note that you have a list. Therefore, you do not have colnames but names. You can edit them like this:

l <- list(col1 = c(123123, 12123, 123123), col1 =  c(123123, 12123, 123123))
l 
# $col1
# [1] 123123  12123 123123
# 
# $col1
# [1] 123123  12123 123123

names(l)
# [1] "col1" "col1"

names(l) <- c("2014", "2015")

l

# $`2014`
# [1] 123123  12123 123123
# 
# $`2015`
# [1] 123123  12123 123123

To only edit certain entries in the list, specify an index:

names(l)[1] <- "new_name"

l

# $`new_name`
# [1] 123123  12123 123123
# 
# $`2015`
# [1] 123123  12123 123123

If you'd like to know more about the different data types in R, I can recommend Hadley Wickham's summary.

like image 116
loki Avatar answered Oct 29 '22 18:10

loki


If you want to use the list name instead of the index, this works.

#Reproduce example list
mylist <- list(Col1 = c(32824, 35646, 34650, 29328, 27376, 28548, 35363, 34740, 49181, 57960, 55550, 50626), Col1 =  c(52610, 55085, 58576, 51300, 50968, 58104, 56585, 38273, 54216, 59043, 67487, 58067), Col1 =  c(59142, 68593, 77510, 73434, 83545, 83483, 79635, 69269, 85703, 73080))
mylist
$Col1
 [1] 32824 35646 34650 29328 27376 28548 35363 34740 49181 57960 55550 50626

$Col1
 [1] 52610 55085 58576 51300 50968 58104 56585 38273 54216 59043 67487 58067

$Col1
 [1] 59142 68593 77510 73434 83545 83483 79635 69269 85703 73080

#Change names in mylist from Col1 to 2014, 2015, 2016
names(mylist) <- c("2014", "2015", "2016")
mylist
$`2014`
 [1] 32824 35646 34650 29328 27376 28548 35363 34740 49181 57960 55550 50626

$`2015`
 [1] 52610 55085 58576 51300 50968 58104 56585 38273 54216 59043 67487 58067

$`2016`
 [1] 59142 68593 77510 73434 83545 83483 79635 69269 85703 73080

You can also change names in mylist from list name Col1 all to the same new.name.

names(mylist)[names(mylist) == "Col1"] <- "new.name"
mylist
$new.name
 [1] 32824 35646 34650 29328 27376 28548 35363 34740 49181 57960 55550 50626

$new.name
 [1] 52610 55085 58576 51300 50968 58104 56585 38273 54216 59043 67487 58067

$new.name
 [1] 59142 68593 77510 73434 83545 83483 79635 69269 85703 73080
like image 28
simpson Avatar answered Oct 29 '22 20:10

simpson