[R] print dataframe names in loop

David Winsemius dwinsemius at comcast.net
Fri May 15 22:11:54 CEST 2015


On May 15, 2015, at 10:05 AM, Kai Mx wrote:

> thanks, that would work, but isn't there a maybe more elegant way to
> "extract" the name from the df variable within the current for (df in
> list()) loop?
> 

You do realize that the `for` function returns NULL, I hope? I was surprised when I learned this, although it is clearly stated in the help page.

Neither `lapply` nor `for` passes the names into the environment for evaluation:

for( d in dflist ) { z <- deparse(substitute(d)); print(z)}
[1] "d"
[1] "d"
[1] "d"

People would generally use this approach:

for (n in names(dflist) { ...do something with nm or dflist[[nm]]... }

-- 
David.



> Best,
> 
> Kai
> 
> 
> On Fri, May 15, 2015 at 2:20 PM, Jim Lemon <drjimlemon at gmail.com> wrote:
> 
>> Hi Kai,
>> One way is to name the components of your list with the names of the
>> data frames:
>> 
>> df1<-data.frame(a=1:3)
>> df2<-data.frame(a=4:6)
>> df3<-data.frame(a=7:9)
>> dflist<-list(df1,df2,df3)
>> names(dflist)<-c("df1","df2","df3")
>> for(i in 1:length(dflist)) cat(names(dflist)[i],"\n")
>> df1
>> df2
>> df3
>> 
>> Jim
>> 
>> 
>> On Fri, May 15, 2015 at 10:05 PM, Kai Mx <govokai at gmail.com> wrote:
>>> Hi everybody,
>>> 
>>> I just can't  figure this out:
>>> 
>>> I have a loop trough several dataframes such as
>>> 
>>> for (df in list(df1, df2, df3, ...)) {
>>> ..some functions with df..
>>> }
>>> 
>>> now I want to print out the current dataframes name (ie the list items
>>> name) with the cat command before the actual functions to have better
>>> orientation in the output.
>>> However, I haven't been successful with different variations of
>> deparse(),
>>> substitute(), (cat(substitute(df)) gives me 'df' for the whole loop).
>>> 
>>> Could somebody please enlighten me?
>>> 
>>> Thanks so much!
>>> 
>>> Best,
>>> 
>>> Kai

-- 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list