BookmarkSubscribe
Choose Language Hide Translation Bar
drewb
Occasional Contributor

JMP find R

Hi there,

Very much a novice-question here. I like to use JMP, and have some data in R that I'd like to import to JMP. I'm trying to use the JMP-to-R interface (first time scripting in JMP), and I don't really know what I'm doing. However, when I run the following JSL script, nothing happens;

 

test1 = Get R(test1);

I'm sure there's much more to it than this, but I'm really at a loss on how to proceed. If you have some suggestions for how I begin pulling data from R into JMP, I'd love to hear! I'm on a PC that just got upgraded to Windows 10, so something I was thinking (but have no idea if this is it) is that JMP can't find the location of my R installation. Again, this is my first venture into JSL scripting, so this is probably a beginner question, but I'm not really sure what I'm doing here. Thanks!

0 Kudos
14 REPLIES 14
txnelson
Super User

Re: JMP find R

The first thing you should do is to read the section "Working with R" in the Scripting Guide section, Extending JMP
Help==>Books==>Scripting Guide
Jim

Re: JMP find R

I agree with Jim. There is a lot of information in the documentation that will save you much confusion and wasted time. Many of the examples provide a good starting point for your own scripts.

 

That said, using R with JMP is not difficult. You must first call the R Connect() function to start R and establish a connection. The other R functions, such as R Get(), then work through this connection.

Learn it once, use it forever!
drewb
Occasional Contributor

Re: JMP find R

Thank you for your suggestions, Mark & Jim. I took a look at the Scripting Guide again and, unfortunately, am still confused. I ran the "Test Your Setup" script that they provide in the Scripting Guide, and it appears to work fine (so my concern that JMP wasn't able to find R seems to be unfounded). However, when I try to run the following script to pull a test dataframe from the R environment (that I called "test1")..

 

R Connect();
test1 = R Get(test1);

I get the following output from the log:

 

TKIntRJMP.R version 5.05
Warning: Error in eval(expr, p) : object 'test1' not found
Unknown

 

I'm not really sure how to trouble-shoot this. I was unable to find a resolution in the Scripting Guide to this issue. Maybe my understanding of this is incorrect? My understanding was that the command R Get() would pull some object from R and return it in JMP. So if I had a dataframe created in the R environment, it would be pulled into JMP as a datatable.

 

Thanks for your advice!

 

0 Kudos

Re: JMP find R

What did you store in the variable named test1?

Learn it once, use it forever!
0 Kudos

Re: JMP find R

Here is a short example from the Help > Scripting Index that might help get you started:

 

Names Default to Here( 1 );

R Init();

x1 = [1, 2, 3];
R Send( x1 );
x2 = R Get( x1 );
Show( x1, x2 );

R Term();

I might have set you in the wrong direction with R Connect().

Learn it once, use it forever!
0 Kudos

Re: JMP find R

You might need to run a R script to make sure that the data frame is available when you call R Get(). The example code for the R Get() opens a JMP data table called Big Class, sends it to R, then gets it back to JMP. Sending it to R made it an active data frame. What are you doing to make the data frame active in R?

 

Here is another example that might help, where a R script is run from JMP.

 

Names Default To Here( 1 );

R Init();

R Submit(
	"x <- rnorm(1000)
hx <- hist(x, breaks=100, plot=FALSE)
plot(hx, col=ifelse(abs(hx$breaks) < 1.669, 4, 2))
x <- rnorm (100)
y <- x**2 + rnorm (100)
summary(y)"
);

Wait( 3 );

R Term();

 

You might need something like this example to be sure that the R data frame is available.

Learn it once, use it forever!
0 Kudos
drewb
Occasional Contributor

Re: JMP find R

Hmm, maybe my data.frame in R isn't available for JMP to access? I'm not sure why, though. When I ran an example script from JMP, it was able to access a dataframe.

R Init();
R Submit(
"
L3 <- LETTERS[1:3]
d <- data.frame(cbind(x=1, y=1:15), Group=sample(L3, 15, repl=TRUE))
"
);
R Get( d ) << NewDataView;
R Term();

When I create a dataframe in R, however, it seems like JMP can't access it. My R script is as follows:

test1 <- data.frame("x"=c(1,2,3,4),"y"=c(5,6,7,8))

 

The resulting data.frame is stored in the R "Global Environment", but when I try to access it with R Get(test1), it doesn't seem to recognize this.

0 Kudos

Re: JMP find R

Yes, I think that you have to submit the R code to make the data frame active in the session during the connection with JMP. This example creates a data frame 'from scratch' and stores it in variable d. The R Get() call can ask for it because it now exists in the R workspace. You might also open a file or get a data frame as a result of modeling in other cases, for example. The data frame does not exist in R unless you submit code to make it one way or another way.

 

Names Default to Here( 1 );

R Init();

R Submit(
    "L3 <- LETTERS[1:3]
     d <- data.frame(cbind(x=1, y=1:15), Group=sample(L3, 15, repl=TRUE))"
);

dt = R Get( d ) << New Data View;

R Term();
Learn it once, use it forever!
0 Kudos

Re: JMP find R

How do you create the data frame in R? Why do you think that it exists in R when JMP connects to it?

Learn it once, use it forever!
0 Kudos