[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