[R] find the data frames in list of objects and make a list of them

Matthew mccormack at molbio.mgh.harvard.edu
Fri Sep 5 00:40:52 CEST 2014


Thank you very much, Bill !

     It has taken my a while to figure out, but yes, what I need is a 
list (the R object, list) of data frames and not a character vector 
containing the names of the data frames.

   Thank you very much. This works well and is getting me in the 
direction I want to go.

Matthew

On 8/13/2014 7:40 PM, William Dunlap wrote:
> Previously you asked
>>      A second question: is this the best way to make a list
>>     of data frames without having to manually type c(dataframe1, dataframe2, ...)  ?
> If you use 'c' there you will not get a list of data.frames - you will
> get a list of all the columns in the data.frame you supplied.  Use
> 'list' instead of 'c' if you are taking that route.
>
> The *apply functions are helpful  here.  To make list of all
> data.frames in an environment you can use the following function,
> which takes the environment to search as an argument.
>
> f <- function(envir = globalenv()) {
>      tmp <- eapply(envir,
>                             all.names=TRUE,
>                             FUN=function(obj) if (is.data.frame(obj))
> obj else NULL)
>      # remove NULL's now
>      tmp[!vapply(tmp, is.null, TRUE)]
> }
>
> Use is as
>    allDataFrames <- f(globalenv()) # or just f()
>
>
>
>
>
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
>
> On Wed, Aug 13, 2014 at 3:49 PM, Matthew
> <mccormack at molbio.mgh.harvard.edu>  wrote:
>> Hi Richard,
>>
>>      Thank you very much for your reply and your code.
>> Your code is doing just what I asked for, but does not seem to be what I
>> need.
>>
>> I will need to review some basic R before I can continue.
>>
>> I am trying to list data frames in order to bind them into 1 single data
>> frame with something like: dplyr::rbind_all(list of data frames), but when I
>> try dplyr::rbind_all(lsDataFrame(ls())), I get the error: object at index 1
>> not a data.frame. So, I am going to have to learn some more about lists in R
>> before proceding.
>>
>> Thank you for your help and code.
>>
>> Matthew
>>
>>
>>
>>
>>
>> Matthew
>>
>> On 8/13/2014 3:12 PM, Richard M. Heiberger wrote:
>>> I would do something like this
>>>
>>> lsDataFrame <- function(xx=ls()) xx[sapply(xx, function(x)
>>> is.data.frame(get(x)))]
>>> ls("package:datasets")
>>> lsDataFrame(ls("package:datasets"))
>>>
>>> On Wed, Aug 13, 2014 at 2:56 PM, Matthew
>>> <mccormack at molbio.mgh.harvard.edu>  wrote:
>>>> Hi everyone,
>>>>
>>>>      I would like the find which objects are data frames in all the
>>>> objects I
>>>> have created ( in other words in what you get when you type: ls()  ),
>>>> then I
>>>> would like to make a list of these data frames.
>>>>
>>>> Explained in other words; after typing ls(), you get the names of
>>>> objects.
>>>> Which objects are data frames ?  How to then make a list of these data
>>>> frames.
>>>>
>>>>      A second question: is this the best way to make a list of data frames
>>>> without having to manually type c(dataframe1, dataframe2, ...)  ?
>>>>
>>>> Matthew
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org  mailing list
>>>> 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.
>> ______________________________________________
>> R-help at r-project.org  mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.


	[[alternative HTML version deleted]]



More information about the R-help mailing list