tags:

views:

599

answers:

6

S-Plus has a great object explorer and data editor built into its GUI. It allows you to easily see all the objects in the workspace at a glance, and sort them by name, size, or date.

As far as I'm aware, the only equivalent for R is the object browser in JGR (http://jgr.markushelbig.org/).

Otherwise I just use the search() and ls() commands most of the time (along with grep() when I have a lot of objects).

# trivial example of routine:
search()
utils.list <- ls(pos="package:utils")
utils.list[grep("edit",utils.list)]

Does anyone have any tricks or suggestions for browsing the R workspace? Are there any point-and-click solutions?

+8  A: 

The ESS mode for Emacs has the following to say in its manual:

13.7 Rdired

Ess-rdired provides a dired-like buffer for viewing, editing and plotting objects in your current R session. If you are used to using the dired (directory editor) facility in Emacs, this mode gives you similar functionality for R objects.

To get started, first make sure you can load ess-rdired. Add the following to your .emacs and then restart emacs.

 (autoload 'ess-rdired "ess-rdired"  
   "View *R* objects in a dired-like buffer." t)

Start an R session with `M-x R' and then store a few variables, such as:

 s <- sin(seq(from=0, to=8*pi, length=100))
 x <- c(1, 4, 9)
 y <- rnorm(20)
 z <- TRUE

Then use `M-x ess-rdired' to create a buffer listing the objects in your current environment and display it in a new window:

             mode length
   s      numeric    100
   x      numeric      3
   y      numeric     20
   z      logical      1

Type C-h m or ? to get a list of the keybindings for this mode. For example, with your point on the line of a variable, p will plot the object, v will view it, and d will mark the object for deletion (x will actually perform the deletion).

Dirk Eddelbuettel
Dirk, do you mind putting the elisp code into a code block? Thanks.
Christopher DuBois
Hm, what elisp code? All I quoted above is straight from the ESS manual. The code itself is in the ESS package.
Dirk Eddelbuettel
Oh. Sorry. I thought "(autoload 'ess-redired ..." was elisp. I thought it was meant to be in a code block. Please ignore.
Christopher DuBois
Got it -- I those two lines, while still part of the section I quoted from the manual, are now formatted as code.
Dirk Eddelbuettel
+4  A: 

str() is very useful. Specifying give.attr=FALSE hides attributes.

> str(diamonds)
'data.frame':   53940 obs. of  10 variables:
 $ carat  : num  0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Factor w/ 5 levels "Fair","Good",..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Factor w/ 7 levels "D","E","F","G",..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Factor w/ 8 levels "I1","SI2","SI1",..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num  61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num  55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int  326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num  3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num  3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num  2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
+7  A: 

The lsos() function shown in this SO questions is also a primitive object browser:

R> lsos()
               Type  Size Rows Columns
ls.objects function 11792   NA      NA
lsos       function  1112   NA      NA
s           numeric   824  100      NA
y           numeric   184   20      NA
x           numeric    56    3      NA
z           logical    32    1      NA
R>
Dirk Eddelbuettel
I use the hell out of the lsos() function but I altered it slightly so that the sizes are shown with pretty formatting: http://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session/2410412#2410412
JD Long
+3  A: 

The rkward R IDE has an inbuilt object browser/editor which seems quite useful, however I haven't used it much myself

screenshots here

Aaron Statham
+3  A: 

What about Rattle? http://rattle.togaware.com/

Brandon Bertelsen
+2  A: 

I use Tinn-R which has a wonderful R explorer window which shows a list of objects. One can also chosose the view in which details of the objects are displayed. Tinn-r is a great script editor (which is its primary purpose) and has some shortcuts such as dataframe.name$[ctrl-shift-D] which brings up a list of column names in dataframe.name so that the programmer does not need to remember them and their exact spelling.

Farrel