Re: [R] Transfer String Array from R to java

From: Simon Urbanek <simon.urbanek_at_r-project.org>
Date: Fri 02 Dec 2005 - 10:23:14 EST

Vasu,

On Dec 1, 2005, at 5:20 PM, Vasundhara Akkineni wrote:

> i want to extract the first column of names as a matrix and pass it
> to a String[] type in java. I am using RServe and was able to pass
> the other two columns to double[] in java but was not able to do so
> for data[,1] to a String[]. I have to do this in order to access
> induvidual string names.

It pretty much depends on what the column really is. An answer upfront: there is currently no String[] construct.

Let's illustrate the details on an example:

REXP x=c.eval("data(iris); as.character(iris$Species)");

What you get is a Vector of REXPs that are Strings, so to construct String[] you could do the following:

Vector v=x.asVector();
String s[] = new String[v.size()];
int i=0;
while (i<s.length) { s[i]=((REXP)v.elementAt(i)).asString(); i++; };

Now, if you fetch the factor directly, then you get RFactor:

REXP x=c.eval("data(iris); iris$Species"); RFactor f=x.asFactor();

Unfortunately RFactor is not very helpful, I have to admit. The idea was to have a flexible structure that holds both the indices and the level names. But the implementation fails to declare both Vectors id and val public, so you can't get to them. If you fix that, then you can use the above to fetch the levels and the indices, but that's very clumsy. I'll fix the RFactor class and in the meantime you can get the components separately like this:

REXP x = c.eval("unclass(iris$Species)"); int indices[] = x.asIntArray();
Vector v = x.getAttribute().asList().getHead().asVector(); // v is the vector containing the levels, so use above code to create String[] from it

I agree that this is all clumsy and I should add direct support for String[] in the same fashion that int[] and double[] are handled... I'm putting it on my ToDo list to be fixed soon...

Cheers,
Simon



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Dec 02 10:28:14 2005

This archive was generated by hypermail 2.1.8 : Fri 02 Dec 2005 - 14:22:30 EST