abel
一个Splus嵌入C++的集成开发例子,供大家参考:
#include "sconnect.h"
#include "iostream"
//A global connection object
CSPengineConnect g_engineConnect;
int main(int argc, char* argv[])
{
//1. 建立S-PLUS连接
g_engineConnect.Create( argc, argv);
//2. 从数据库获取建模数据(odbc)
bool bSuccess = FALSE;
char* tmpStr="fitness=importData(type='ODBC', odbcConnection='DSN=test;',odbcSqlQuery='Select * from FITNESS')";
g_engineConnect.SyncParseEval(tmpStr);
//3. 进行回归建模
tmpStr = "fitness.model=lm(runtime~oxygen,data=fitness)";
g_engineConnect.SyncParseEval(tmpStr);
//4. 从数据库获取预测数据(odbc)
tmpStr="fitnessnew=importData(type='ODBC', odbcConnection='DSN=test;',table='fitnessnew')";
g_engineConnect.SyncParseEval(tmpStr);
//5. 进行预测
tmpStr="predict.fitness=predict.lm(fitness.model, fitnessnew,conf.level = 0.95,pi.fit=T)";
g_engineConnect.SyncParseEval(tmpStr);
//6. 预测数据输出到sqlServer(odbc)
tmpStr="pre=insert.col(fitnessnew,'@END',3,column.names=c('pre', 'prelower', 'preupper'))";
g_engineConnect.SyncParseEval(tmpStr);
g_engineConnect.SyncParseEval("pre$pre=as.vector(predict.fitness$fit)");
g_engineConnect.SyncParseEval("pre$prelower=as.vector(predict.fitness$pi.fit[,1])");
g_engineConnect.SyncParseEval("pre$preupper=as.vector(predict.fitness$pi.fit[,2])");
tmpStr="exportData(as.data.frame(pre), type='ODBC', odbcConnection='DSN=test;', odbcTable='predict_fitness')";
g_engineConnect.SyncParseEval(tmpStr);
//7. 绘制回归预测比较图
g_engineConnect.SyncParseEval("library(winjava)");
g_engineConnect.SyncParseEval("java.graph(file='c://tmp//test.jpg', format='JPEG',colorscheme=java.colorscheme.standard) ");
g_engineConnect.SyncParseEval("plot(pre$oxygen, pre$runtime,col=1)");
g_engineConnect.SyncParseEval("abline(fitness.model$coefficients[1],fitness.model$coefficients[2],lty=2,col=6)");
g_engineConnect.SyncParseEval("ord <- order(fitnessnew$oxygen)");
g_engineConnect.SyncParseEval("lines(fitnessnew$oxygen[ord], predict.fitness$pi.fit[,1][ord],col=5)");
g_engineConnect.SyncParseEval("lines(fitnessnew$oxygen[ord], predict.fitness$pi.fit[,2][ord],col=8)");
g_engineConnect.SyncParseEval("dev.off()");
//SHELL命令显示图形
// system("c:\tmp\test.jpg");
return 1;
}