[R] R strange behaviour when building huge concatenation

angeloimm angeloimm at gmail.com
Mon Nov 26 09:22:37 CET 2012


Hello
I'm using some R code in order to use the model BG-NBD implementation
I'm using Java and I call R by using RCaller.
I must admit that i'm really really new to R so maybe I'm doing something
wrong.
I use the code on this URL:  http://code.google.com/p/clv-master-thesis/
<http://code.google.com/p/clv-master-thesis/>  
This is my working Java code (a simple Junit test):
@Test
public void testRCaller(){
try {
RCaller caller = new RCaller();
caller.setRscriptExecutable("/usr/bin/Rscript");
caller.cleanRCode();
RCode code = new RCode();
code.clear();
String helper = "/dati/helper.R";
String modelNbd = "/dati/model-nbd.R";
String modelParetoNbd = "/dati/model-pareto-nbd.R";
String modelBgNbd = "/dati/model-bg-nbd.R";
String modelCbgCnbd = "/dati/model-cbg-cnbd-k.R";
code.R_source(helper);
code.R_source(modelNbd);
code.R_source(modelParetoNbd);
code.R_source(modelBgNbd);
code.R_source(modelCbgCnbd);
code.addRCode("cdData <- read.table(\"/dati/cdnow.csv\", head=T)");
code.addRCode("names(cdData)[2] <- \"x\";");
code.addRCode("bgMleFit <- bgEstimateParameters(cdData, list(r=1, alpha=2,
a=1, b=2));");
code.addRCode("summary(bgMleFit);");
code.addRCode("cdBgParams <- as.list(coef(bgMleFit));");
code.addRCode("t <- 39;");
code.addRCode("cdBgCe <- bgConditionalForecast(cdData, cdBgParams, t);");
code.addRCode("(cdBgSumEstimate <- sum(cdBgCe));");
code.addRCode("(cdBgMsle <- mean((log(cdData$p2x+1)-log(cdBgCe+1))^2));");
code.addRCode("(corr <- cor(cdData$p2x, cdBgCe));");
caller.setRCode(code);
caller.runAndReturnResult("cdBgCe");
ROutputParser parser = caller.getParser();
ArrayList<String> nomi = parser.getNames();
for (String nome : nomi) {
double[] previsioni = parser.getAsDoubleArray(nome);
logger.info("Nome "+nome+" lunghezza valori "+previsioni.length);
for (int i = 0; i < previsioni.length; i++) {
logger.info("Valore "+ previsioni[i]);
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}

By running this code all works pretty good; now i didn't want to use the csv
file as data source; I wanted to query DB and pass data to R
As far as I know the R read.table function builds a data.frame from reading
the provided csv file. So what I did is:
I used Java in order to read the csv and I wrote this code (after I read the
csv file and for semplicity I don't write the code related to the csv
reading):
@Test
public void testRCaller(){
try {
RCaller caller = new RCaller();
caller.setRscriptExecutable("/usr/bin/Rscript");
caller.cleanRCode();
RCode code = new RCode();
code.clear();
String helper = "/dati/helper.R";
String modelNbd = "/dati/model-nbd.R";
String modelParetoNbd = "/dati/model-pareto-nbd.R";
String modelBgNbd = "/dati/model-bg-nbd.R";
String modelCbgCnbd = "/dati/model-cbg-cnbd-k.R";
code.R_source(helper);
code.R_source(modelNbd);
code.R_source(modelParetoNbd);
code.R_source(modelBgNbd);
code.R_source(modelCbgCnbd);
Map<String, Object> data = this.readCsvData();
StringBuilder userIds = new StringBuilder("ID <- c(");
long[] utenti = (long[])data.get("userIds");
int[] ordini = (int[]) data.get("ordini");
double[] tx = (double[]) data.get("tx");
double[] t = (double[])data.get("t");
int[] p2x = (int[]) data.get("p2tx");
for(int i = 0; i < utenti.length; i++){
userIds.append(utenti[i]+", ");
}
//here i check if the stringbuilder ends with, and i clean it...checkSb is
simply an utility method
userIds     = checkSb(userIds).append(");");
code.addIntArray("p1x", ordini);
code.addDoubleArray("tx", tx);
code.addDoubleArray("t", t);
code.addIntArray("p2x", p2x);
code.addRCode("cdData<-data.frame(ID , p1x, tx, t, p2x);");
code.addRCode("names(cdData)[2] <- \"x\";");
code.addRCode("bgMleFit <- bgEstimateParameters(cdData, list(r=1, alpha=2,
a=1, b=2));");
code.addRCode("summary(bgMleFit);");
code.addRCode("cdBgParams <- as.list(coef(bgMleFit));");
code.addRCode("t <- 39;");
code.addRCode("cdBgCe <- bgConditionalForecast(cdData, cdBgParams, t);");
code.addRCode("(cdBgSumEstimate <- sum(cdBgCe));");
code.addRCode("(cdBgMsle <- mean((log(cdData$p2x+1)-log(cdBgCe+1))^2));");
code.addRCode("(corr <- cor(cdData$p2x, cdBgCe));");
caller.setRCode(code);
caller.runAndReturnResult("cdBgCe");
ROutputParser parser = caller.getParser();
ArrayList<String> nomi = parser.getNames();
for (String nome : nomi) {
double[] previsioni = parser.getAsDoubleArray(nome);
logger.info("Nome "+nome+" lunghezza valori "+previsioni.length);
for (int i = 0; i < previsioni.length; i++) {
logger.info("Valore "+ previsioni[i]);
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
As you can see the code is totally similar to the previous one except that I
don't use read.table function.
Well by executing this code I have an error. At first I thought in some
error in the Java code but I checked and no error was present
Then I tried the code in the R console. Well I have something really
strange.
Let's start from this instruction (the int array is recovered from the csv
file):

int[] ordini = (int[]) data.get("ordini");
code.addIntArray("p1x", ordini);

This Java-RCaller instruction generates this R code: p1x<-c(..........).
More exactly the generated R code is the following (be ready: it's huge):
p1x<-c(2, 1, 0, 0, 0, 7, 1, 0, 2, 0, 5, 0, 0, 0, 0, 0, 10, 1, 3, 0, 2, 0, 0,
0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 12, 0, 0,
1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 4, 0, 1, 0, 0, 0, 2, 0, 0, 3, 0, 0, 1,
0, 1, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 7, 0, 10, 0, 0, 1, 6, 0, 0, 0, 0, 0, 2,
4, 1, 5, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 4, 3, 0, 1, 2, 0, 1, 2, 0, 2, 1, 1, 0, 5, 2, 7, 2, 0, 4, 13,
0, 4, 4, 0, 0, 1, 0, 1, 29, 0, 3, 0, 0, 1, 0, 10, 0, 0, 13, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 6, 8, 0, 0, 0, 1, 0, 4, 0, 2, 3, 3, 0, 0, 0, 0, 0, 6, 0, 1,
0, 0, 2, 0, 2, 2, 0, 0, 1, 0, 1, 0, 0, 7, 0, 0, 0, 2, 0, 4, 0, 1, 1, 0, 0,
0, 0, 0, 2, 0, 1, 1, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 5, 0, 0, 2,
0, 1, 2, 0, 0, 1, 0, 1, 0, 5, 0, 0, 1, 2, 0, 1, 0, 0, 1, 2, 1, 0, 1, 0, 1,
0, 3, 1, 13, 0, 0, 0, 0, 0, 3, 3, 1, 0, 0, 3, 0, 5, 0, 2, 1, 0, 1, 0, 0, 1,
1, 0, 0, 0, 3, 1, 1, 0, 1, 0, 0, 0, 4, 0, 2, 0, 3, 0, 0, 1, 0, 1, 0, 2, 0,
1, 3, 25, 0, 0, 0, 0, 5, 0, 2, 0, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0,
1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2, 4, 0, 0, 1, 3, 0, 1, 0, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 11, 0, 0, 4, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 3,
1, 0, 0, 2, 0, 8, 1, 0, 2, 1, 0, 0, 1, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2,
2, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 4, 0, 0, 2, 0, 6, 0,
1, 0, 1, 1, 1, 2, 1, 0, 7, 4, 0, 0, 0, 7, 0, 1, 1, 0, 2, 1, 0, 4, 0, 1, 0,
0, 2, 0, 0, 4, 0, 0, 2, 1, 0, 1, 0, 11, 0, 4, 0, 0, 0, 4, 0, 3, 0, 1, 1, 0,
0, 6, 3, 0, 0, 0, 0, 2, 0, 2, 0, 18, 0, 1, 0, 1, 0, 0, 0, 5, 0, 1, 0, 6, 0,
2, 0, 0, 2, 0, 1, 1, 0, 0, 1, 0, 1, 2, 0, 0, 0, 1, 0, 2, 0, 2, 0, 0, 0, 0,
1, 10, 0, 1, 3, 3, 0, 2, 0, 0, 12, 0, 1, 2, 2, 0, 0, 0, 0, 5, 0, 0, 2, 0, 5,
0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 7, 0, 0, 2, 0,
0, 2, 0, 4, 0, 0, 3, 0, 1, 0, 2, 2, 0, 1, 1, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0,
1, 0, 3, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0,
2, 1, 1, 0, 0, 0, 0, 5, 1, 0, 0, 1, 2, 1, 0, 0, 0, 0, 1, 0, 8, 1, 0, 6, 1,
2, 0, 3, 6, 0, 1, 0, 2, 5, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 13, 0, 0, 1, 3,
0, 5, 0, 2, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 4, 6, 1, 2, 0, 0, 2, 0, 7, 0, 0,
0, 0, 0, 3, 0, 5, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 1,
0, 0, 1, 10, 0, 0, 0, 0, 3, 3, 0, 0, 2, 5, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 1, 0,
2, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 1, 13, 7, 0, 0, 3, 0, 1, 0, 1, 1,
2, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, 1, 19, 2, 2, 0, 2, 2, 0,
0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0,
1, 0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 0, 0, 4, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 5,
1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 7, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0,
0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 1, 0, 1, 0, 1, 2, 0, 1, 0, 0, 0, 2, 0, 4, 0,
1, 7, 1, 0, 1, 0, 0, 4, 0, 1, 0, 0, 0, 0, 1, 0, 7, 1, 0, 6, 0, 5, 0, 2, 0,
1, 0, 6, 0, 2, 0, 0, 0, 2, 2, 0, 0, 6, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0,
0, 1, 4, 0, 0, 1, 0, 1, 0, 0, 1, 0, 5, 2, 0, 0, 0, 3, 0, 12, 1, 0, 0, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 1, 0, 0, 3, 0, 1, 0, 1, 0,
0, 0, 0, 4, 0, 0, 2, 0, 5, 0, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
0, 0, 2, 3, 0, 0, 0, 0, 11, 0, 0, 2, 0, 1, 0, 7, 0, 0, 1, 0, 3, 0, 2, 0, 1,
0, 4, 2, 2, 1, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 1, 6, 0, 0, 4, 0, 0, 1, 0, 2,
0, 1, 3, 7, 2, 0, 5, 0, 0, 0, 0, 5, 0, 12, 1, 0, 1, 0, 1, 0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 4, 0, 1, 0, 1, 0, 3,
0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 3, 4, 1, 0, 2, 1, 2, 1, 0, 0, 2, 1, 0, 0, 0,
1, 7, 0, 6, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 0, 3, 0, 0, 3, 0, 3, 0, 8, 0, 1, 0, 0, 2, 0, 0, 11, 0, 1, 8, 0, 1,
0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 3, 1, 0, 1, 6, 0, 2, 1, 1, 0, 1, 1, 0, 3, 2,
0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 3, 2, 0, 3, 0, 0, 1, 4, 0, 6, 0, 1, 1, 4, 0,
2, 0, 4, 0, 0, 0, 0, 2, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 2, 1, 0, 0, 3, 0, 0,
0, 0, 0, 0, 1, 1, 3, 2, 0, 0, 0, 1, 0, 0, 0, 4, 0, 1, 3, 0, 0, 0, 0, 0, 0,
3, 1, 0, 1, 1, 2, 0, 2, 0, 0, 0, 3, 0, 1, 0, 1, 0, 9, 0, 0, 4, 0, 2, 0, 5,
0, 0, 1, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 4, 1, 0, 0, 1, 5, 0, 0, 0, 1, 0,
1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 3, 0, 0, 2, 0, 14, 4, 0, 0, 0, 0, 0, 0, 2, 0,
0, 2, 0, 3, 0, 2, 0, 0, 1, 1, 6, 1, 6, 0, 1, 2, 0, 0, 2, 1, 0, 2, 1, 0, 1,
0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 5, 0, 2, 0, 1, 0,
5, 0, 1, 2, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 4,
0, 1, 0, 0, 3, 1, 0, 2, 0, 2, 1, 0, 0, 0, 4, 0, 0, 0, 26, 1, 6, 0, 0, 1, 0,
0, 0, 2, 0, 0, 0, 2, 0, 0, 1, 2, 0, 1, 0, 0, 0, 14, 0, 1, 0, 2, 4, 0, 1, 6,
0, 0, 1, 3, 1, 0, 0, 0, 0, 1, 1, 0, 8, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 3,
0, 1, 1, 1, 1, 0, 1, 9, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0, 4,
1, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 3, 2, 0, 2, 5, 0, 1, 0, 0, 1, 1, 0,
0, 0, 0, 1, 0, 5, 1, 0, 1, 0, 4, 0, 0, 0, 0, 0, 4, 3, 0, 0, 0, 1, 0, 1, 0,
2, 0, 0, 0, 2, 4, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 3, 0, 2, 0,
1, 0, 1, 0, 0, 0, 5, 1, 3, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 3,
0, 0, 5, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 9, 2, 0, 1, 1, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 4, 0, 4, 3,
0, 3, 2, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 3, 2, 2, 0, 0, 3, 2, 4, 0, 7, 1, 2,
0, 2, 2, 0, 3, 0, 0, 0, 1, 0, 1, 0, 0, 3, 0, 0, 1, 6, 0, 1, 0, 2, 3, 0, 0,
3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 9, 4, 2,
0, 0, 1, 4, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 5, 0, 1, 0, 0,
0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 7, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 1, 0, 2, 0, 0, 3, 0, 0, 0,
0, 1, 0, 21, 2, 0, 0, 0, 3, 0, 0, 3, 2, 1, 0, 0, 1, 1, 1, 0, 0, 1, 2, 2, 1,
0, 0, 4, 0, 0, 0, 2, 0, 0, 1, 0, 1, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0,
0, 0, 1, 0, 0, 6, 0, 11, 0, 0, 1, 1, 0, 1, 1, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 17, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
0, 7, 0, 0, 1, 0, 0, 3, 0, 0, 2, 4, 0, 1, 0, 0, 0, 0, 2, 1, 0, 4, 2, 0, 0,
1, 3, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 1, 0,
1, 1, 3, 3, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 1, 1, 0, 2, 0, 2, 0, 3, 0,
4, 0, 1, 1, 0, 0, 1, 0, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0,
6, 0, 0, 0, 0, 3, 0, 0, 0, 2, 5, 0, 1, 0, 0, 1, 0, 1, 0, 0, 2, 0, 1, 2, 0,
0, 7, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 5, 0, 1, 0, 1, 0, 1,
0, 0, 1, 0, 3, 0, 2, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 2, 0,
0, 1, 0, 1, 2, 0, 0, 1, 0, 2, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 3, 0,
0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 4, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 2, 6, 0, 1, 0,
0, 0, 0, 2, 0, 7, 0, 1, 2, 1, 1, 1, 0, 0, 1, 5, 0, 1, 0, 0, 2, 0, 0, 0, 0,
0, 0, 1, 0, 0, 1, 0, 1, 0, 5, 1, 0, 1, 2, 0, 0, 1, 2, 0, 1, 0, 2, 0, 1, 2,
7, 1, 2, 0, 0, 0, 5, 0, 4, 0);

When I execute this function in the R console I have some strain behavior;
sometimes it seems to not be executed some other time I have an error like
"Unexpected element in......" and I really can't figure where I'm wrong...
Instead if I use the "read.table function" all works pretty good.
Can you give me any tips?
Am I wrong anywhere?

Thank you
Angelo



--
View this message in context: http://r.789695.n4.nabble.com/R-strange-behaviour-when-building-huge-concatenation-tp4650817.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list