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

Sarah Goslee sarah.goslee at gmail.com
Mon Mar 30 16:47:01 CEST 2015


colnames(e) <- paste0('pop',1:12)

isn't a function and doesn't return anything.

> 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



More information about the R-help mailing list