Sven E. Templer
2015-Mar-30 15:43 UTC
[R] changing column labels for data frames inside a list
On 30 March 2015 at 17:31, Bert Gunter <gunter.berton at gene.com> wrote:> 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. > >That's why I pointed to ?return. Sarah's statement was not so clear (and might have been misleading) for me regarding the R expertise of the OP.> -- 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. >[[alternative HTML version deleted]]
Sarah Goslee
2015-Mar-30 15:50 UTC
[R] changing column labels for data frames inside a list
On Mon, Mar 30, 2015 at 11:43 AM, Sven E. Templer <sven.templer at gmail.com> wrote:> > > On 30 March 2015 at 17:31, Bert Gunter <gunter.berton at gene.com> wrote: >> >> 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. >> > > That's why I pointed to ?return. > Sarah's statement was not so clear (and might have been misleading) for me > regarding the R expertise of the OP.You're right: I totally wasn't clear. I got involved making a working reproducible example and didn't explain what I was doing. And you are totally correct, the last expression will be returned. Mea culpa. Sarah>> >> -- 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
Sven E. Templer
2015-Mar-30 16:12 UTC
[R] changing column labels for data frames inside a list
On 30 March 2015 at 17:50, Sarah Goslee <sarah.goslee at gmail.com> wrote:> On Mon, Mar 30, 2015 at 11:43 AM, Sven E. Templer > <sven.templer at gmail.com> wrote: > > > > > > On 30 March 2015 at 17:31, Bert Gunter <gunter.berton at gene.com> wrote: > >> > >> 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. > >> > > > > That's why I pointed to ?return. > > Sarah's statement was not so clear (and might have been misleading) for > me > > regarding the R expertise of the OP. > > You're right: I totally wasn't clear. I got involved making a working > reproducible example and didn't explain what I was doing. And you are > totally correct, the last expression will be returned. Mea culpa. > >No one to blame but the missing reproducible example, I agree! Sven> Sarah > > > >> > >> -- 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 >[[alternative HTML version deleted]]