[rkward-devel] data.frame-related plugins
Thomas Friedrichsmeier
thomas.friedrichsmeier at ruhr-uni-bochum.de
Thu Jun 17 12:14:36 UTC 2010
Hi,
a few days ago, in private mail, Jacek asked me, how to access the currently
edited data.frame from a plugin. The answer is that this is not currently
possible, but of course it would make a whole lot of sense to be able to do
so. Manipulating the current data.frame is a very important use case, and it
should not be necessary to select the data.frame from the object list for each
operation.
Some tasks that come to mind:
- sorting data
- generating data
- transforming data / recoding
Well, technically this issue is easy to solve. I'll simply create a new
"context"
(http://rkward.sourceforge.net/documents/devel/plugins/contextualized_plugins.html),
which will be active when a data.frame-editor is active. Plugins in that
context will be able to reference that data.frame.
What keeps me thinking, however, is how this plugin context relates to plugins
outside of the context. Let's take the example of a plugin that creates some
random generated data. The problem is, that there could really be three
variants of this plugin:
1) A plugin that operates on the current data.frame, and adds a new column to
it.
2) A plugin that operates on an arbitrary data.frame, and add a new column to
it. I think this use case is important, too. Having to open each object that
you want to work with, would seem rather cumbersome to me. And for very large
data.frames, this could easily lead to serious memory/performance problems.
3) A plugin that adds a new object anywhere in globalenv(). This plugin would
have to ask for the length of the generated sequence, but otherwise, it would
be very similar to cases 1 and 2.
Again, technically this is not much of an issue. In fact it should not be too
difficult to cover all three cases with a single piece of code. 2 and 3 could
even be covered by the same dialog, invoked from the same menu entry. But that
still leaves of with:
a) A dialog that can only be invoked when editing a data.frame.
b) A mostly identical dialog that is valid "globally", i.e. not tied to
editing a data.frame.
So how to deal with this duplication of functionality? One approach would be
to place all context-dependent plugins into sub-menus of "Edit". The global
plugins would reside in some other top-level menu (perhaps "Transformations").
Another idea would be to have only one set of menu-entries, i.e. only "global"
plugins. Those could still reference the current data.frame, if there is any,
and work on .GlobalEnv, otherwise. Of course this would mean that the plugins
change their behavior in a way that may be non-obvious and confusing. It might
also be mildly infuriating, in case you really want to manipulate an object
which is not the one you are currently editing (you'd have to close it, first).
What do you think of these options? Any other thoughts / ideas?
Regards
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/rkward-devel/attachments/20100617/b6568725/attachment.sig>
More information about the Rkward-devel
mailing list