[R] changing column labels for data frames inside a list

MacQueen, Don macqueen1 at llnl.gov
Mon Mar 30 16:48:26 CEST 2015


Assuming that the elements of mylist are data frames, try this:

mylist <- lapply(mylist, function(e) { names(e) <- paste0('pop',1:12) ; e})


With certain exceptions, the result of a function is the result of the
last expression in the function body. As you defined it, the last
expression was
  colnames(e) <- paste0('pop',1:12)
that is, the column names (not "labels", but names).

If the elements really are data frames, then names() can be used instead
of colnames(), but colnames() is ok. I don't know if one of them is better
than the other for data frames.

-Don

-- 
Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062





On 3/30/15, 6:54 AM, "Vikram Chhatre" <crypticlineage at gmail.com> wrote:

>> summary(mygenfreqt)
>                  Length Class  Mode
>dat1.str 59220  -none- numeric
>dat2.str 59220  -none- numeric
>dat3.str 59220  -none- numeric
>
>> head(mylist[[1]])
>           1     2     3     4     5     6     7     8     9    10    11
> 12
>L0001.1 0.60 0.500 0.325 0.675 0.600 0.500 0.500 0.375 0.550 0.475 0.350
>0.275
>L0001.2 0.40 0.500 0.675 0.325 0.400 0.500 0.500 0.625 0.450 0.525 0.650
>0.725
>
>I want to change 1:12 to pop1:pop12
>
>mylist<- lapply(mylist, function(e) colnames(e) <- paste0('pop',1:12))
>
>What this is doing is replacing the data frames with just names
>pop1:pop12.  I just want to replace the column labels.
>
>Thanks for any suggestions.
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list