tags:

views:

436

answers:

8

I have been working on a few R packages for some general tools that aren't currently available in R: blogging, report delivery, logging, and scheduling. This led me to wonder: what are the most important things that people wish existed in R that currently aren't available?

My hope is that we can use this to pinpoint some gaps, and possibly work on them collaboratively.

+4  A: 

A natural interface to the .NET framework would be awesome, though I suspect that that might be a lot of work.

EDIT: Syntax highlighting from within RGui would also be wonderful.

Richie Cotton
Not soo sure about the .Net idea -- that is too platform-centric whereas one of the strengths of the R system (in the large sense) is how the underlying platform is mostly abstracted away.
Dirk Eddelbuettel
@Dirk: It would really need to work with Mono as well to be cross-platform and fit with the open source nature of R.
Richie Cotton
The Mac RGui has highlighting, and JGR does as well.
Ian Fellows
I can see how this would be really *useful* (regardless of whether it's cross-platform).
Shane
Romain Francois has a source level highlight project based on the R parser: http://r-forge.r-project.org/projects/highlight/
Dirk Eddelbuettel
Somebody should get to work on an improved TextMate bundle for R, the current one is alright, but it would be appreciated. Doesn't help none Mac people, sorry.
Dan
+4  A: 

Interfaces to any of the new-fangled 'Web 2.0' databases that use key-value pairs rather than the standard RDMS. A non-exhaustive list (in alphabetical order) would be

and it would of course be nice if we had a DBI-alike abstraction on top of this. Jeff has started with RBerkeley but that use the older-school Oracle BerkeleyDB backend rather than one of those new things.

Dirk Eddelbuettel
+3  A: 

There are few libraries to interface with database in general, and there is not ORM library.

RMySQL is useful, but you have to write the SQL queries manually and there is not a way to generate them as in a ORM. Morevoer, it is only specific to MySQL.

Another library set that R still doesn't have, for me, it is a good system for reading command line arguments: there is R getopt but it is nothing like, for example, argparse in python.

dalloliogm
For general database, have you looked at DBI, RODBC or JODBC?
Shane
Besides getopt, there is also the optparse package which recently arrived on CRAN from R-Forge.
Dirk Eddelbuettel
Whit Armstrong also created unifieddbi: http://github.com/armstrtw/unifieddbi.
Shane
thank you for the comments: I was looking for an ORM library in R, but it is more for curiosity than for real need. I will look at your links :)
dalloliogm
Your wish has been answered: http://github.com/johnmyleswhite/r-ORM
Shane
+6  A: 

A Real-Time R package would be my choice, using C Streaming perhaps.

Also I'd like a more robust web development package. Nothing as extensive as Ruby on Rails but something a bit better than Sweave combined with R2HTML, that can run on RApache. I think this needs to be a huge area of emphasis for R in general.

I realize LaTeX is better markup for certain academia but in general I think HTML should be the markup language of choice. More needs to be done in terms of R Web Apps, so applications can be hosted on huge RAM remotely and R can start being used for SaaS data applications and other graphics choices.

Dan
+1 to this idea-- it's something I have been thinking of often lately.
Sharpie
+1  A: 

A native .NET interface to RGUI. R(D)Com is based on COM, and it only allows to exchange matrices, not more complex structures.

Nestor
+5  A: 

I'm a former Mathematica junkie, and one thing that I really miss is the notebook style interface. When I did my research with notebooks, papers would almost write themselves as I did my analysis. But now that I'm using R, I find that documenting my work to be quite tedious.

For people that are not so familiar with Mathematica, you have documents called "notebooks" that can contain code, text, equations, and the results from executed code (which can be equations, text, graphics, or interactive tools). Everything can be neatly organized into styled subsections or sections that are collapsable. You can have multiple open documents that integrate with a single shared kernel.

While I don't think a full-blown Mathematica style interface is entirely necessary, some interactive document system that would support text (for description), code, code output, and embedded image output would be a real boon to researchers.

eytan
I think that's a great idea. I was thinking about this last night myself. Matlab has the same functionality (you can run Matlab code within the documentation). This would be a big project. Just thinking about implementation, it might be best to do this with javascript on the existing html framework that they're developing. So any section marked code could be highlighted and executed.
Shane
The SAGE project (http://www.sagemath.org) already has something like this implemented-- R is one of many backends that are supported. There is always room for improvement though!
Sharpie
+2  A: 

An output device which produces Javascript code, perhaps using the protovis library.

Karsten W.
I'm creating that here: http://code.google.com/p/rwebvis/
Shane
This is good news! It looks very promising
Karsten W.
+1  A: 

I would like to see a possibility to embed another programming language within R in a more straightforward way by the users. I give this as an example in some common-lisp implementations one could write a function with embedded C code like this:

(defun sample (x) (ffi:c-inline (n1 n2) (:int :int) (values :int :int) "{ int n1 = #0, n2 = #1, out1 = 0, out2 = 1; while (n1 <= n2) { out1 += n1; out2 *= n1; n1++; } @(return 0)= out1; @(return 1)= out2; }" :side-effects nil))

It would be good if one could write an R function with embedded C or lisp code (more interested in the latter) in a similar way.

francogrex
This exists. Look at inline.
Shane
Is it cfunction {inline}? It supports c, cpp, c++, f, f95, objc, objcpp, objc++. It's quite nice. Good to add Lisp to the list.
francogrex