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();
次に、それを実行すると、2 つの問題が発生しました。
まず、次の行からエラーが発生します。
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 つの認識できない引数で呼び出されました
さらに: 警告メッセージ:
2 つのポイントが指定されたウィンドウの外側にあるとして拒否されました
実際、40 を 0 に変更すると、すべてのポイントがウィンドウ内にあるため機能しますが、R でコードを実行すると、すべてのポイントがウィンドウ内にないという事実は問題になりません。 そして、前のコードを R で実行すると機能します。 したがって、JMP では警告メッセージが表示されるのに、R では警告メッセージが表示されない理由がわかりません。
2 番目の問題は、データをエクスポートしたいときに、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 インターフェイスあなたの例は機能します。ログにこれがありました:

2番目の質問については、よく理解できていません。 しかし、send() コマンドを使用して JMP データテーブルを R に送信し、ログに出力しようとします。 あなたの例では、次のようになります。

私の例では、ログにこれが記録されました。

そして私のテーブルは次のようになります:

Re: JMP の R インターフェイス私の簡単な例を試してみましたか? 効果ありますか? JMP ログには何が表示されますか?
JMP データテーブルを R に送信して、R で出力してみましたか? そのデータ フレームはデータ テーブルと一致しますか?
Re: JMP の R インターフェイスまったく同じコードを使用できるように、R Submit File() 関数を使用してみます。 しかし、jmp コードには、R にはない同じエラーが発生します。 これは解決する必要があるエラーです。 たくさんのことを試してみましたが、なぜそれが表示されるのかわかりません。
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 インターフェイスJMP データ テーブルを R のデータ フレームとして使用できます。 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() 関数を使用すると、「'list' オブジェクトを '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']
");
最初の問題の出力が変わるはずだと思います。