여기에서 완전히 새로 워진 R입니다. SPSS 데이터 세트에서 몇 가지 복잡한 다항식을 풀기 위해 SPSS에서 R을 실행했습니다. 내가 다시 SPSS로 R의 결과를 얻을 수 있었다, 그러나 그것은 매우 우아 과정이었다R에서 값 전달 (SPSS에서 실행) 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에 의해 생성 된 새로운 데이터 세트를 가져와 원본 데이터 세트로 MATCH 파일을 실행해야했습니다. 내가하고 싶은 것은 a) SPSS에서 R로 숫자를 가져 와서 b) 조작하여 특정 기준에 맞는 다중 뿌리를 찾아 내고 c) 결과를 SPSS 데이터 세트에 다시 넣으십시오. 이전 데이터
나는 이것을 더 간단하게 만들 수있는 것이 누락 되었습니까? 명심이 시도 밖에서 제로 연구 경험을 가지고 있지만 SPSS와 matlab 프로그래밍에 괜찮은 경험이 있습니다.
미리 도움을 주셔서 감사합니다.
오, 그래서 내가하는 일은 유일한 방법이었습니다. 팁 주셔서 감사합니다 - 나는 단지 해결책을 찾기 위해 얼마나 많은 시간을 낭비했는지 짐작할 수 있습니다. 추가 질문 : SPSS 구문의 문자열을 R로 작성하여 SPSS 구문 창으로 보낼 수 있습니까? 이는 훌륭한 해결 방법입니다. COMPUTE 명령을 생성하고 SPSS에서 실행하십시오. R에서 .sps 파일을 만든 다음 SPSS에서 실행되도록 보낼 수는 있지만 파일 구조가 다른 다양한 네트워크 PC에서 작업하고 권한을 쓰기 때문에 임시 파일을 HD로 작성하는 것에 대한 개인적인 편견이 있습니다. – DocBuckets