Re: [Rd] Not all functions work in RSPerl package?

From: Xianjun Dong <xianjun.dong_at_bccs.uib.no>
Date: Tue 26 Sep 2006 - 16:37:00 GMT

Hi, Prof Duncan

I am sorry to report to a wrong place. But I am lucky to meet you by chance, right? Thanks first ^^

  1. The variable y1 is an array get from Perl, each element is from a database (the type should be numeric). Here is the code for that.
        $query = qq{
        select exonCount, count(hsEnsGene) as geneCount from countTop1000ks group by exonCount order by exonCount;
        }; 
        $sql=$orthologDB->prepare($query);
        $sql->execute()or die "Could not execute '$query' ...";
        
        my @x1; my @y1;
        while(my($exonCount, $geneCount) = $sql->fetchrow_array())
        {
           push(@x1, $exonCount);
           push(@y1, $geneCount);
        }


Here is the result if I print out the value in @y1:

        print "y1---",join(" ",@y1), "---end\n";

% y1---101 44 33 26 8 15 18 13 3 5 4 2 1 4 1 1---end

But when I call

        &R::callWithNames("barplot", {'',\@y1, 'main', 'Barplot the Gene number per exon with top1000 low Ks', 'xlab', "Exon(low ks) number in the gene",'ylab', 'Numbers of gene'});

It always says non-numeric argument:

% Error in -0.01 * height : non-numeric argument to binary operator

If I asign the value to another array, like

        my @x=(101, 44, 33, 26, 8, 15, 18, 13, 3, 5, 4, 2, 1, 4, 1, 1);
        &R::callWithNames("barplot", {'',\@x, 'main', 'Barplot the Gene number per exon with top1000 low Ks', 'xlab', "Exon(low ks) number in the gene",'ylab', 'Numbers of gene'});

then it works.

I don't know why and what the difference is.

I also thought whether it is because of the different data type between Perl and R, because in Perl, "3" and 3 could be same sometime. So I call

        &R::callWithNames("as.numeric",{'',\@y1});

before I call

        &R::callWithNames("barplot", {'',\@y1});

Same error!

Same case if I change to use the R::boxplot(\@y1) as you said.

I am not sure I explain clear this time.

Looking forwards to your response!

Regards,

-Xianjun

On Thu, 2006-09-21 at 07:33 -0700, Duncan Temple Lang wrote:

> -----BEGIN PGP SIGNED MESSAGE-----

> Hash: SHA1
> 
> 
> 
> Hi Xianjun
> 
> [Important: Please don't send mail about an R package to r-bugs. That is
> for reporting bugs in R itself. Add on packages are different
> and it is only a coincidence that I am one of the R-core developers
> and package author.  In general, all bug reports about
> a package should be sent to the author  and questions should go to the
> author and the r-devel or r-help list as appropriate.]
> 
> 
> Is the problem you report a bug? Well not necessarily in RSPerl,
> but in your code.  Unfortunately, you haven't told me what
> the variable y1 contains so it is hard to figure out what
> is going into the computations.
> 
> A couple of things:
>  a) Your example is calling boxplot in the first call and barplot
>     in the second.
> 
>   b) in the first example, you are passing @y1 and in the second
>     you are passing \@y1.
> 
>      I would guess that \@y1 is more appropriate and you might try that
>      in the first case.
> 
>   c) the first case doesn't have any named arguments (just '') so why
>      use callWithNames.  Just R::boxplot(\@y1)
> 
> 
> You are calling the R functions, but you are getting an error during
> the invocation. The error message is coming from R.  So the
> problem is that you are passing inputs to the functions that it cannot
> handle.  This can happen directly in R and so also in RSPerl.  My guess
> is that you don't have the correct type of data in @y1 or that you are
> not passing it in the call as a reference.
> 
> Xianjun Dong wrote:
> > Hi, 
> > 
> > It looks that not all function in R could be implemented by RSPerl. For
> > example,  when I call
> > 
> > &R::callWithNames("boxplot", {'',@y1});
> > or
> > R::barplot(\@y1);
> > 
> > There would be error:
> > 
> > Error in -0.01 * height : non-numeric argument to binary operator
> > Caught error in R::call()
> > 
> > The same happened when calling "barplot", but it's ok to call plot.
> > 
> > Is it a bug?
> > 
> 
> - --
> Duncan Temple Lang                    duncan@wald.ucdavis.edu
> Department of Statistics              work:  (530) 752-4782
> 4210 Mathematical Sciences Building   fax:   (530) 752-7099
> One Shields Ave.
> University of California at Davis
> Davis,
> CA 95616,
> USA

> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.3 (Darwin)
> 
> iD8DBQFFEqKy9p/Jzwa2QP4RAoVcAJ4rK3CKGBCxlgdlJYke59l/Rm4rAQCffS1x
> nhSyWBrhQre0UXvv3DKD0KI=
> =EVsZ

> -----END PGP SIGNATURE-----
        [[alternative HTML version deleted]]

R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Sep 27 02:42:23 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 26 Sep 2006 - 17:30:25 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.