Skip to content

Odp: Object Browser

3 messages · wampeh, Liviu Andronic, j verzani

#
How do I get gvarbrowser to display only data.frame named, say "atab1" or
"atab2" or "atab*"?

Also, how do I turn off the selection pull down box?


#I tried:
mydefaultclasses <-  list("Data sets1"=c("data.frame")   )
# ----
# Then
v <- gvarbrowser(  container =gwindow("Object broser"), 
gWidgets:gvarbrowser_classes=mydefaultclasses )

#--
# but it does not seem to work

#I also tried:
options("gWidgets:gvarbrowser_classes"=mydefaultclasses)

#then
v <- gvarbrowser(  container =gwindow("Object broser"))

#this too did not work

#I would simply like to display the variable browser window for data.frame
"atab1" (say).

Thank you



--
View this message in context: http://r.789695.n4.nabble.com/Object-Browser-tp2594912p4650511.html
Sent from the R help mailing list archive at Nabble.com.
#
On Fri, Nov 23, 2012 at 6:44 AM, wampeh <wampeh at gmail.com> wrote:
Two remarks. If you hope to get an answer it would be a good idea to
CC John Verzani, maintainer of gWidgets.

Give RStudio a try as it comes with a built-in object browser.

Liviu

  
    
  
#
If gvarbrowser isn't quite to your liking, it isn't so hard to build your own
variable browser. This uses a slight modification of Petr's function and
wraps in a gWidgets interface. Modify his function to display what info you
want and add a handler to the tbl object to have some action associated with
a user selection:


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(names, obj.type, obj.size, stringsAsFactors=FALSE)#,
obj.dim) 
    names(out) <- c("Name", "Type", "Size")#, "Rows", "Columns") 
    if (!missing(order.by)) 
        out <- out[order(out[[order.by]]), ] 
    out 
} 


library(gWidgets)
options(guiToolkit="RGtk2")

w <- gwindow()
g <- ggroup(cont=w, horizontal=FALSE)
bg <- ggroup(cont=g)
glabel("Pattern:", cont=bg)
flt <- gedit("", cont=bg, expand=TRUE)
tbl <- gtable(ls.objects(), cont=g, expand=TRUE)
bg <- ggroup(cont=g)
addSpring(bg)
ref <- gbutton("refresh", cont=bg)

update_gui <- function(...) {
  pat <- svalue(flt)
  tbl[] <- ls.objects(pattern=pat)
  TRUE                                  # for task callback
}

lapply(list(flt, ref), addHandlerChanged, handler=update_gui)

This will refresh when the user updates the pattern to filter by or the
refresh button. 

One can have it refresh when the global environment changes by adding a task
callback:

addTaskCallback(update_gui)

But this can slow things up if the workspace is large. The RStudio object
browser has a very fast way to see if there are changes to the objects it is
monitoring but this is done in C++ code.





--
View this message in context: http://r.789695.n4.nabble.com/Object-Browser-tp2594912p4650575.html
Sent from the R help mailing list archive at Nabble.com.