cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JMP is taking Discovery online, April 16 and 18. Register today and join us for interactive sessions featuring popular presentation topics, networking, and discussions with the experts.
Choose Language Hide Translation Bar
drewb
Level I

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!

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.

drewb
Level I

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!

 

Re: JMP find R

What did you store in the variable named test1?

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().

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.

drewb
Level I

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.

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();

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?