1

ここでRはまったく新しい。SPSSデータセットからいくつかの複雑な多項式を解くためにSPSSでRを実行しました。RからSPSSに結果を戻すことができましたが、それは非常に洗練されていないプロセスでした。

begin program R.
z  <- polyroot(unlist(spssdata.GetDataFromSPSS(variables=c("qE","qD","qC","qB","qA"),cases=1),use.names=FALSE))
otherVals <- spssdata.GetDataFromSPSS(variables=c("b0","b1","Lc","tInv","sR","c0","c1","N2","xBar","DVxSq"),cases=1)
b0<-unlist(otherVals["b0"],use.names=FALSE)
b1<-unlist(otherVals["b1"],use.names=FALSE)
Lc<-unlist(otherVals["Lc"],use.names=FALSE)
tInv<-unlist(otherVals["tInv"],use.names=FALSE)
sR<-unlist(otherVals["sR"],use.names=FALSE)
c0<-unlist(otherVals["c0"],use.names=FALSE)
c1<-unlist(otherVals["c1"],use.names=FALSE)
N2<-unlist(otherVals["N2"],use.names=FALSE)
xBar<-unlist(otherVals["xBar"],use.names=FALSE)
DVxSq<-unlist(otherVals["DVxSq"],use.names=FALSE)
z2 <- Re(z[abs(c(abs(b0+b1*Re(z)-tInv*sR*sqrt(1/(c0+c1*Re(z))^2+1/N2+(Re(z)-xBar)^2/DVxSq))-Lc))==min(abs(c(abs(b0+b1*Re(z)-tInv*sR*sqrt(1/(c0+c1*Re(z))^2+1/N2+(Re(z)-xBar)^2/DVxSq))-Lc)))])
varSpec1 <- c("Xd","Xd",0,"F8","scale")
dict <- spssdictionary.CreateSPSSDictionary(varSpec1)
spssdictionary.SetDictionaryToSPSS("results", dict)
new = data.frame(z2)
spssdata.SetDataToSPSS("results", new)
spssdictionary.EndDataStep( )
end program.

正直なところ、それはほとんど関連する例からつなぎ合わされており、本来よりも複雑に見えます。Rによって作成された新しいデータセットを取得し、元のデータセットでMATCHFILESを実行する必要がありました。私がやりたいのは、a)SPSSからRに数値をプルし、b)それらを操作する-この場合、特定の基準に適合するポリルートを見つける-、c)結果をSPSSデータセットに戻すことです。以前のデータ。

これをもっと簡単にする何かが欠けていますか?この試み以外ではRの経験はありませんが、SPSSとmatlabのプログラミングにはまともな経験があることを覚えておいてください。

あなたが与えるどんな助けにも前もって感謝します!

4

1 に答える 1

2

SPSSのRは、新しいSPSSデータセットを作成できますが、既存のデータセットを変更することはできません。RからのデータがアクティブなSPSSデータセットと次元的に矛盾する状況はたくさんあります。したがって、上記のAPIを使用して辞書とデータフレームを作成し、一致させる必要がある場合はSPSS側で適切なことを行う必要があります。SPSSの拡張要求をsuggest@us.ibm.comに送信することをお勧めします。

于 2012-06-05T23:09:22.453 に答える