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

MacQueen, Don macqueen1 at llnl.gov
Mon Mar 30 18:54:03 CEST 2015


Regarding the averages, someone else mentioned that it's preferred to
start a new question in a new post to the list.

That said, you are confusing "inside" the list with "outside" the list.
Try this:

(the following R expression is supposed to be all on one line, but my
email software may cause a line break)

myavgs <- lapply(mylist2, function(e) {cbind( e, avgs=rowSums(e)/12)} )

With no example data I can't test it. The brackets {} are not, strictly
speaking, necessary, but I think they help clarify what is inside the
function with what is outside it.

-- 
Don MacQueen

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





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

>First of all, thank you for all the quick replies.  Here is a solution
>that
>worked for me.
>
>mylist2 <- lapply(mylist, function(e){colnames(e) <- paste0('pop',1:12);
>return(e)})
>
>> head(mylist2[[1]])
>        pop1  pop2  pop3  pop4  pop5  pop6  pop7  pop8  pop9 pop10 pop11
>pop12
>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
>
>While we are at this, I wanted to create a 13th column in each data frame
>for average of each row.
>
># Calculate average
>myavg <- lapply(mylist2, function(e) rowSums(mylist2)/12)
>
># Attach to the main data frame
>mylist3 <- cbind(mylist2, myavg)
>
>This does not work the way I imagined it would.  The myavg vector is
>attached directly to mylist2, not to individual dataframes within.
>
>p.s. Is it a standard convention to always copy the reply to the last
>person who responded?
>
>On Mon, Mar 30, 2015 at 10:56 AM, Sven E. Templer <sven.templer at gmail.com>
>wrote:
>
>> On 30 March 2015 at 16:47, Sarah Goslee <sarah.goslee at gmail.com> wrote:
>>
>> > colnames(e) <- paste0('pop',1:12)
>> >
>> > isn't a function and doesn't return anything.
>> >
>>
>> But
>> function(e){colnames(e) <- paste0('pop', 1:2)}
>> is a function and it returns something (the last evaluated expression! -
>> here the paste0 return):
>>
>> > mylist2 <- lapply(mylist, function(e){colnames(e) <- paste0('pop',
>>1:2)})
>> > mylist2
>> [[1]]
>> [1] "pop1" "pop2"
>>
>> [[2]]
>> [1] "pop1" "pop2"
>>
>> [[3]]
>> [1] "pop1" "pop2"
>>
>>  from ?return:
>>
>> If the end of a function is reached without calling return, the value of
>> the last evaluated expression is returned.
>>
>> >
>> > > mylist <- list(
>> > + data.frame(a = runif(10), b = runif(10)),
>> > + data.frame(c = runif(10), d = runif(10)),
>> > + data.frame(e = runif(10), f = runif(10)))
>> > > mylist2 <- lapply(mylist, function(e){colnames(e) <- paste0('pop',
>> 1:2);
>> > e})
>> > > colnames(mylist2[[1]])
>> > [1] "pop1" "pop2"
>> >
>> > Sarah
>> >
>> > On Mon, Mar 30, 2015 at 9: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.
>> > >
>> >
>> > --
>> > Sarah Goslee
>> > http://www.functionaldiversity.org
>> >
>> > ______________________________________________
>> > 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.
>> >
>>
>>         [[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.
>>
>
>	[[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