Skip to content

Object Browser

5 messages · wxffxw, PIKAL Petr, Douglas Bates +1 more

#
What's the best object browser?

Dear all,

I have tried all the popular R IDE or editors like Eclipse, Komodo, JGR,
Revolution...
They all have fancy fucntions like auto completion, syntax highlight....
BUT, I JUST WANT A OBJECT BROWSER!

The easiest way to view objects in R console is fix(), but you have no
global view of all the objects in the workspace.
Revolution has the best object browser so far, but this thing is way too
big...
Eclipse all has automatically object browser, but you can't only see the
basic summary info. and it's really tricky to configure StatET.
Jgr is very handy, when you double click the object name, you can view the
object in a spreadsheet like using fix(), but you have to press the
"Refresh" button each time you want to see the updated objects...

So, is there any thing like the combination of eclipse and Jgr?
If not, I am interested to develope something to fulfill this simple but
very important function. But right now I have no idea where to start. Any
suggestions?


Peter
2 days later
#
Hi
I noticed that nobody answered your question yet so here is my try.

If you want to see what objects are in your environment you can use ls() 
but its output is only names of objects. Here is a function I use a long 
time for checking what objects are there, their type, size and possibly 
rows columns. You can modify it to give you some more info but usually it 
is not needed.

Regards
Petr

ls.objects <- function (pos = 1, pattern, order.by) 
{
    napply <- function(names, fn) sapply(names, function(x) fn(get(x, 
        pos = pos)))
    names <- ls(pos = pos, pattern = pattern)
    obj.class <- napply(names, function(x) as.character(class(x))[1])
    obj.mode <- napply(names, mode)
    obj.type <- ifelse(is.na(obj.class), obj.mode, obj.class)
    obj.size <- napply(names, object.size)
    obj.dim <- t(napply(names, function(x) as.numeric(dim(x))[1:2]))
    vec <- is.na(obj.dim)[, 1] & (obj.type != "function")
    obj.dim[vec, 1] <- napply(names, length)[vec]
    out <- data.frame(obj.type, obj.size, obj.dim)
    names(out) <- c("Type", "Size", "Rows", "Columns")
    if (!missing(order.by)) 
        out <- out[order(out[[order.by]]), ]
    out
}


r-help-bounces at r-project.org napsal dne 24.09.2010 23:04:20:
the
Any
http://r.789695.n4.nabble.com/Object-Browser-
http://www.R-project.org/posting-guide.html
#
Thanks very much for your reply, Petr. That's a nice function.
Also, I found "gvarbrowser" function in package "gWidgest" is really a good
one. It's GUI and yet extendable.

library(gWidgets)
options(guiToolkit="RGtk2")
gvarbrowser(cont=gwindow("Object browser"))

I highly recommend to anyone who is seeking a GUI object browser. You can
embed above codes to your .Rprofile or add it to R console menu using
winMenuAdd function. Recently, John Verzani has done some wonderful work to
make it even better, and have uploaded the newest package to CRAN. Thanks
John!
#
On Mon, Sep 27, 2010 at 3:04 AM, Petr PIKAL <petr.pikal at precheza.cz> wrote:
An alternative for the command line interface is

ls.str()

which combines ls() and a very brief version of str() as applied to
each of the objects.
#
wxffxw <wxffxw at gmail.com> writes:
If you are interested in developing such a browser,  you might try to contact
Ian Fellows the developer of Deducer (www.deducer.org). I am not using it myself
but it looks like there is an API for extensions and in addition Deducer works in
many IDEs (if not all).

I have in plan to write a tree like visual object inspector for ESS,  but it
will take some time.

If you manage to start the project, try to keep in mind that "object browser" is
actually an "environment inspector" so it could be used to inspect environments
in an hierarchical fashion. Such approach would be useful during a
debug session for instance.

Also the same code might be potentially useful for inspection of S4/S3 class
hierarchy, multilevel lists, proto hierarchies,  Rjava,  cpp or whatever object or
collections with tree-likes structure. So generality is relay important here.

Cheers,
Vitally.