[RkWard-devel] Barplot plugin
Thomas Friedrichsmeier
thomas.friedrichsmeier at ruhr-uni-bochum.de
Thu Jan 25 15:09:23 UTC 2007
On Thursday 25 January 2007 12:53, you wrote:
> That would be very nice and tried it in different ways and in this way too,
> but with no result. The if (if getRK_val ("rainbow")) { ?>, col=rainbow(
> rk.temp.x) <? } ?>, does not seem to work for me, because this part does
> not appear in the code of the plug in, or appears constantly, whatever the
> choice of the user. Tried the code as is with a small differentiation here
> l=rainbow( rk.temp.x) <? } ?> is in the barplot4.php.
Ok, small correction: Instead of
if (getRK_val ("rainbow")) ...
you'd have to write
if (getRK_val ("rainbow") == "TRUE") ...
either that or change the value and value_unchecked of the rainbow checkbox
to "1" and "0". Why? Well, PHP works slightly different from R. If it sees
the string "FALSE", it will not recognize this as the logical false. Rather
it will see "Ok, this is a non-zero string, I can't convert it to a number,
so I'll take the condition as fulfilled". In other words, here's what it
looks like in PHP, when the getRK_val () statement has been evaluated:
if ("TRUE") {
// this gets executed / shown
}
if ("FALSE") {
// this also gets executed / shown!
}
if ("0") {
// this does not get executed
}
if ("FALSE" == "TRUE") {
// this does not get executed
}
Does it make sense, now?
> - You might want to rewrite the first part as:
> > rk.temp.x <- (<? echo ($vars); ?>)
> > if(is.factor(rk.temp.x)) rk.temp.x=summary(rk.temp.x)
> > else if (!is.matrix(rk.rempt.x)) error ("Only matrices or factors are
> > supported")
> >
> > Saving one variable name, and also giving a more meaningful error message
> > in
> > case something wrong was selected.
>
> I tried this, but I get a syntax error. The warnings points me to the .xml
> file, so I removed the number type=numeric but with no result.
A typo, somewhere?
> Finally, I made a change making one more variable rk.temp.barplot2 and
> moved all the function to the function preprocess() as I had done in
> correlation graph.
Not quite sure, whether it make much sense in this case. After all, in essence
it's a really thin wrapper around barplot, and does not provide too much
additional functionality (ok, one additional statement for the value labels,
but I don't think that justifies a function).
However, let's try to get the PHP ifs right, first, then we can worry about
this detail later.
> This leads me to one idea that it cross my mind. Could we write some
> functions and embed them in the rkward package for R, so to use them in the
> plugins like the Rcmdr package does?
It depends. Yes, if it's a function that is
1) used by many or all plugins and
2) does not hide any essentials, i.e. only does some printing / formatting,
but does not actually calculate a result / perform a statistic function
No, if it's a function that is
1) useful to only two or three plugins or
2) hides some essential steps of what is being done.
The reasons are
a) Keep the rkward package lean an mean. If we would - in the extreme - add
one function for each plugin, that would mean plugins are no longer modular,
are no longer easy to install (you'd always have to update the rkward package
as well), and the rkward package would become huge, while only little
functionality is actually used in a typical session.
b) Keep compatible in the essentials. The core of all generated code should
also be runnable without the rkward package installed (so users can share
code snippets with other R users that cannot or do not want to use RKWard).
RKWard may provide some icing on the cake by e.g. making sure the results are
printed in a consistent look across all plugins, but it should not actually
provide statistics functions. Those are better kept in the regular add-on
packages on CRAN.
If we do feel a real need for that, we should provide a stand-alone add-on
package for inclusion on CRAN, or try to get the function(s) included in
existing packages on CRAN.
c) Don't hide what's going on. The generated code should be as simple as
possible, but not to the point of hiding everything in a function. Then - if
users would like to modify some aspect - they'd have to start modifying those
functions, instead of just copy-and-pasting some snippets from here to there.
Well, this is not set in stone, but that's the way I see it.
Regards
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/rkward-devel/attachments/20070125/ec4c585e/attachment.sig>
More information about the Rkward-devel
mailing list