It depends on whether you wish to refer to the column to be logged by name or index.
Reprex: set.seed(1234) dat <- lapply(1:3, function(i)data.frame(a = runif(5), b = sample(letters,5))) ## by numerical index of column d <- lapply(dat,function(x){x[,"logged"]<- log10(x[,1]); x}) ## by name of column dd <- lapply(dat,function(x){x[,"logged"]<- log10(x[,"a"]); x}) There are also slight variations on how you can do the "[" indexing that others may post. Note that you have to return the modified data frame in the function. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Mon, Jun 18, 2018 at 1:46 PM, Honkit Wong <stephe...@gmail.com> wrote: > Dear R community, > I have a question seems very simple but have trouble to do it. > I have a list which stores many data frames. Now, I want to perform log10 > on one column in each data frame in the list and save the value as a new > column back to the original data frame in the list. How do I quickly do > that with lapply function ? > > Many thanks. > ______________________________________________ > R-help@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@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.