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

Bert Gunter gunter.berton at gene.com
Mon Mar 30 17:31:07 CEST 2015


Sarah's statement is correct.

So is yours. They are not contradictory, and I believe Sarah's point
was that the OP needed to learn the appropriate syntax.

-- Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
Clifford Stoll




On Mon, Mar 30, 2015 at 7: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.



More information about the R-help mailing list