[Rd] How to create a table structure in Java code?

Morkus morkus at protonmail.com
Thu Oct 26 17:00:22 CEST 2017


Thanks! I just figured it out (thanks to "Beyond Compare") and was coming here to post back.

The boxM test doesn't work with that (now, finally working) REXP structure, but I probably now need to create a table or something and parse that structure.

So much fun! :)

Thanks again.

- M

Sent from [ProtonMail](https://protonmail.com), Swiss-based encrypted email.

> -------- Original Message --------
> Subject: Re: [Rd] How to create a table structure in Java code?
> Local Time: October 26, 2017 10:13 AM
> UTC Time: October 26, 2017 2:13 PM
> From: simon.urbanek at R-project.org
> To: Morkus <morkus at protonmail.com>
> Jan van der Laan <rhelp at eoos.dds.nl>, r-devel at r-project.org <r-devel at r-project.org>
>
> You are entering the quoting hell - you are missing quotes and escapes for \n. it would be much more reasonable to use the rConnection.assign method instead of pasting any content through the parser.
>
> Cheers,
> Simon
>
>> On Oct 26, 2017, at 9:59 AM, Morkus via R-devel r-devel at r-project.org wrote:
>> That's amazing! Thank you!!!
>> One follow up question, if that's OK?
>> If, instead of using hard-coded CSV, I read the CSV into a variable first, then it fails again with a parse error.
>> Code below.
>> So, if I read the CSV into a variable, do I need an additional wrapper method?
>> Seems like it should still work.
>> Thanks in advance for your reply.
>> -M
>> String inputIris = "5.1,3.5,1.4,0.2,setosa\n" +
>> "4.9,3,1.4,0.2,setosa\n" +
>> "4.7,3.2,1.3,0.2,setosa\n" +
>> "4.6,3.1,1.5,0.2,setosa\n" +
>> "5,3.6,1.4,0.2,setosa\n" +
>> "5.4,3.9,1.7,0.4,setosa\n" +
>> "4.6,3.4,1.4,0.3,setosa";
>> REXP irisData =rConnection.eval(
>> "read.csv(textConnection(" + inputIris + "), header = FALSE)");
>> Sent from [ProtonMail](https://protonmail.com), Swiss-based encrypted email.
>>
>>> -------- Original Message --------
>>> Subject: Re: [Rd] How to create a table structure in Java code?
>>> Local Time: October 26, 2017 7:45 AM
>>> UTC Time: October 26, 2017 11:45 AM
>>> From: rhelp at eoos.dds.nl
>>> To: r-devel at r-project.org
>>> I suspect that you are looking for something like:
>>> read.csv(textConnection(
>>> "5.1,3.5,1.4,0.2,setosa
>>> 4.9,3,1.4,0.2,setosa
>>> 4.7,3.2,1.3,0.2,setosa
>>> 4.6,3.1,1.5,0.2,setosa
>>> 5,3.6,1.4,0.2,setosa"
>>> ), header = FALSE)
>>> HTH,
>>> Jan
>>> On 25-10-17 12:50, Morkus via R-devel wrote:
>>>
>>>> Hi all,
>>>> Using RConsole, it's easy to get data from the database that you can use in an R Command. Like this:
>>>> (Reference case)
>>>> irisQuery <- dbGetQuery(conn, "select * from iris")
>>>> boxM(irisQuery [,-5], irisQuery[,5])
>>>>
>>>> (Actual case this posting is about)
>>>> Yet, if I'm getting that same (sample IRIS) data, say, in a web service possibly POSTED from a SQL command, that same data might look like this (portion of the included iris data set below). I'm thus not sure how to package the data so R likes it.
>>>> Example R-included IRIS data from SQL output:
>>>> 5.1,3.5,1.4,0.2,setosa,
>>>> 4.9,3,1.4,0.2,setosa,
>>>> 4.7,3.2,1.3,0.2,setosa,
>>>> 4.6,3.1,1.5,0.2,setosa,
>>>> 5,3.6,1.4,0.2,setosa,
>>>> I've tried various combinations in code to achieve what's simple in RConsole, but I can't get R to accept my structure.
>>>>
>>>> - I've tried just including the data in a string.
>>>> - I've tried wrapping the data with "data"
>>>> - I've tried wrapping the data with "data.frame" (as below).
>>>>
>>>> Here's my latest attempt:
>>>> String tableRead = "data.frame(5.1,3.5,1.4,0.2,setosa\n" +
>>>> "4.9,3,1.4,0.2,setosa\n" +
>>>> "4.7,3.2,1.3,0.2,setosa\n" +
>>>> "4.6,3.1,1.5,0.2,setosa\n" +
>>>> "5,3.6,1.4,0.2,setosa)" ;
>>>> // using parseAndEval below to give me actual error R is sending...
>>>> REXP rResponseObject = rConnection.parseAndEval("try(eval("+tableRead+"),silent=TRUE)");
>>>> if (rResponseObject.inherits("try-error"))
>>>> {
>>>> System.out.println("R Serve Eval Exception : "+rResponseObject.asString());
>>>> }
>>>> REXP boxMResult = rConnection.eval("boxM("+ tableRead+ "[,-5]," + tableRead + "[, 5])"); // FAILS <<
>>>>
>>>> Error in the above case is:
>>>> Disconnected from the target VM, address: '127.0.0.1:51356', transport: 'socket'
>>>> org.rosuda.REngine.REngineException: eval failed, request status: R parser: syntax error
>>>> at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:454)
>>>> at org.rosuda.REngine.REngine.parseAndEval(REngine.java:108)
>>>> at net.example.start_r_fromjava.RStatisticsExample.main(RStatisticsExample.java:151)
>>>> Does the POSTed data need to be in a different format or am I just not framing it correctly?
>>>> Would appreciate any tips on how to package table data that might come from a SQL Query passed to Java code.
>>>> Thanks very much in advance,
>>>>
>>>> - M
>>>>
>>>> Sent from [ProtonMail](https://protonmail.com), Swiss-based encrypted email.
>>>> [[alternative HTML version deleted]]
>>>>
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>> ---------------------------------------------------------------
>>>
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>> [[alternative HTML version deleted]]
>>
>> ---------------------------------------------------------------
>>
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
	[[alternative HTML version deleted]]



More information about the R-devel mailing list