JMP의 R 인터페이스안녕하세요,
JMP로 실행하고 싶은 코드를 R로 작성했습니다. 코드는 다음과 같습니다.
R init();
//send data to R
R Send(dt);
R submit("
library(spatstat)
#creation fenetre
fenn<-owin(xrange=c(40,760), yrange=c(40,160), poly=NULL, mask=NULL, units=NULL)
ppp<-ppp(x=dt$XM,y=dt$YM,window=fenn)
print(quadratcount(ppp,nx=6,ny=3)
Q<-quadrat.test.ppp(ppp,nx=6,ny=3)
a<-cdf.test(ppp,'x')
D=0
if(a[[2]] & Q[[3]] < 0.1 ){
D=0}else {D=1}
Distribution=as.data.frame(rep(c(D),nrow(dt)))
class(Distribution)
print(a)
");
R term();
그런 다음 실행할 때 두 가지 문제가 있습니다.
먼저 다음 줄에 오류가 있습니다.
fenn<-owin(xrange=c(40,760), yrange=c(40,160), poly=NULL, mask=NULL, units=NULL)
ppp<-ppp(x=dt$XM,y=dt$YM,window=fenn)
즉 :
오류: 인식할 수 없는 인수 2개로 함수 boundingbox가 호출되었습니다.
추가: 경고 메시지:
2개의 점이 지정된 창 밖에 놓여 있어 거부되었습니다.
사실 40을 0으로 변경하면 모든 포인트가 내 창에 있기 때문에 작동하지만 R에서 코드를 실행하면 내 모든 포인트가 창에 없다는 사실은 문제가 되지 않습니다. 그리고 R에서 이전 코드를 실행하면 작동합니다. 그래서 왜 JMP에서는 경고 메시지가 나오고 R에서는 그렇지 않은지 이해할 수 없습니다.
두 번째 문제는 데이터를 내보내고 싶은데 JMP가 데이터 프레임을 추출하려고 하지 않는데 그 이유를 모르겠습니다. 이 코드를 사용합니다.
ResidJMP = R Get(Distribution);
ResidJMP << New Data View;
R term();
사실 JMP에서 데이터 테이블을 반환하고 나중에 이를 기본 데이터 테이블로 사용하고 싶습니다.
대량 맞춤화윈도우Re: JMP의 R 인터페이스오류에 대한 해결책이 있었습니까?
Error in if (is.na(datam)) { : the condition has length > 1나는 같은 문제가 있습니다.
Re: JMP의 R 인터페이스JMP 기술 지원팀( support@jmp.com ) 이 문제에 대한 도움을 받으십시오.
Re: JMP의 R 인터페이스이제 내 주요 문제는 R에서 내 데이터 프레임을 내보내는 것입니다. 내 데이터보다 귀하의 예에 동일한 오류가 있습니다.
Erreur : Error in if (is.na(datam)) { : the condition has length > 1
Unexpected errors occurred while attempting to transfer the data.내 R get()이 data.frame에 있는지 확인합니다. 내 코드는 다음과 같습니다.
Treat=Open( "C:\Users\GROUSD01\Desktop\CréationcodeMPPT\Results 4.jmp" );
R init();
//send data to R
R Send(Treat);
R submit("library(spatstat)
round(Treat$XM)
round(Treat$YM)
XM<-Treat$XM
YM<-Treat$YM
test<-as.data.frame(cbind(XM,YM))
test2<-data.frame()
for (i in 1:nrow(test)){
if(test[i,2]>39){
test2<-rbind(test2,test[i,1:2])}}
fenn<-owin(xrange=c(40,760), yrange=c(40,160), poly=NULL, mask=NULL, units=NULL)
#creation point pattern
ppp<-ppp(x=test2$XM,y=test2$YM,window=fenn)
print(ppp)
plot(quadratcount(ppp,nx=6,ny=3))
Q<-quadrat.test.ppp(ppp,nx=6,ny=3)
print(Q)
a<-cdf.test(ppp,'x')
paste('Ma pvalue du KS test ', format(a[[2]], digits=3))
D=character()
if(a[[2]] & Q[[3]] < 0.1 ){
D='Distribution Non-Uniforme'}else {D='Distribution Uniforme'}
Distribution<-(rep(c(D),length(Treat$XM)))
Treat<-cbind(Treat,Distribution)
");
R Get(Treat)<<New Data View
R term();그러나 나는 같은 결과를 위해 많은 다른 것을 시도했습니다.
Re: JMP의 R 인터페이스귀하의 예는 작동합니다. 로그에 다음이 있습니다.

두 번째 질문에 대해서는 제가 잘 이해하고 있는지 잘 모르겠습니다. 하지만 send() 명령을 사용하여 JMP 데이터 테이블을 R로 보낸 다음 로그에 인쇄하려고 합니다. 귀하의 예를 들면 다음과 같습니다.

내 예에서 나는 이것을 로그에 얻었습니다.

내 테이블은 다음과 같습니다.

Re: JMP의 R 인터페이스내 간단한 예를 들어 보셨습니까? 작동합니까? JMP 로그에 무엇이 표시됩니까?
JMP 데이터 테이블을 R로 전송하고 R에서 인쇄해 보셨습니까? 해당 데이터 프레임이 데이터 테이블과 일치합니까?
Re: JMP의 R 인터페이스정확히 동일한 코드를 사용할 수 있도록 R Submit File() 함수를 사용하려고 합니다. 하지만 R에 없는 jmp 코드에도 동일한 오류가 있습니다. 해결이 필요한 오류입니다. 나는 많은 것을 시도하고 왜 그것이 나타나는지 이해하지 못합니다.
Error: Function boundingbox called with 2 unrecognised arguments
Re: JMP의 R 인터페이스R에서 이 코드를 사용할 때
library(spatstat)
data<-read.("Results.csv")
#creation fenetre
fenn<-owin(xrange=c(40,760), yrange=c(40,160), poly=NULL, mask=NULL, units=NULL)
#creation point pattern
ppp<-ppp(x=data$XM,y=data$YM,window=fenn)
plot(ppp)
summary(ppp)
#test quadrat
quadratcount(ppp,nx=6,ny=3)
Q<-quadrat.test.ppp(ppp,nx=6,ny=3)
paste("Ma pvalue du quadrat test ", format(Q[[3]], scientific=TRUE, digits=3))
#test ks
a<-kstest(ppp,'x')
paste("Ma pvalue du KS test ", format(a[[2]], scientific=TRUE, digits=3))
D=character()
if(a[[2]] & Q[[3]] < 0.1 ){
D="Distribution Non-Uniforme"}else {D="Distribution Uniforme"}
Distribution<-rep(c(D),length(XM))
dt<-cbind(dt,Distribution)
잘 작동합니다. 사실 이 창을 사용하면 JMP에서 잘 작동합니다.
fenn<-owin(xrange=c(0,760), yrange=c(0,160), poly=NULL, mask=NULL, units=NULL)
내 (x,y) 포인트가 모두 창에 있기 때문에 내가 원하는 창을 넣으면 문제가 나옵니다. 그러나 R에서는 창 문제가 없습니다.
하지만 변수에 문제가 있으면 다른 창에서 작동하지 않아야 하는데 이것이 제가 이해하지 못하는 것입니다.
귀하의 의견에 내가 이해하지 못하는 것이있을 수 있지만 오류가 무엇인지 찾지 못했습니다. RI에서 JMP로 인쇄할 때 데이터 프레임이 양호합니다. 나는 확실히 길을 잃었다
Re: JMP의 R 인터페이스R에서 JMP 데이터 테이블을 데이터 프레임으로 사용할 수 있습니다. R Send() 함수는 한 데이터 구조를 다른 데이터 구조로 자동 변환합니다. 다음은 간단한 예입니다.
Names Default to Here( 1 );
// make sure JMP can find the desired installed version of R
Set Environment Variable( "R_HOME", "C:\Program Files\R\R-4.1.3" );
// use regression example from JMP Sample Data Folder
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// use standard linear model function with data frame
R Init( );
R Send( dt );
R Submit(
"fit <- lm( dt$weight~dt$height )
print( fit )"
);
R Term();
// examine results in Log
그래서 R 코드(함수 인수)나 데이터 프레임에 있는 변수의 특성에 문제가 있는 것이 아닐까 의심해 봅니다. 함수 호출이 올바른지 확인한 후 R에서 데이터 테이블을 인쇄하여 모든 것이 예상대로 전송되었는지 확인하십시오.
Re: JMP의 R 인터페이스이것을 내 데이터에 적용하면 내가 사용한 열이 숫자가 아니라고 표시되고 as.numeric() 함수를 사용하면 '목록' 개체를 'double' 유형으로 강제할 수 없습니다. 이 문제는 $ 호출과 함께 나타나지 않습니다. 불행히도 여기에 너무 많은 문제가 있습니다
Re: JMP의 R 인터페이스안녕하세요,
기본적인 예를 들어,
R Init(); // Initiate R connection
dt = Open(“$SAMPLE_DATA/Big Class.jmp”,invisible);
R Send(dt);
열 호출은 다음과 같은 방식으로 수행되어야 합니다.
R Submit("
print(dt['weight'])
//b<-dt['weight']/dt['height']
");
대신에
R Submit("
print(dt$weight)
//b<-dt['weight']/dt['height']
");
첫 번째 문제의 출력을 변경해야 한다고 생각합니다.