R is attractive to statistical analysts for its ease of use and ready access of packages implementing modern methodologies. If you have IML, you can submit R commands within SAS/IML enviornment, see Rick's post @ here. Unfortunately, not all analysts have licensed IML. To work around this limitation, I proposed the following technique to submit R statements in a SAS/Base enviornment.
To exchange data between R and SAS, I pushed SAS dataset into a CSV file that can be read by R. Instead, with some more coding, we can leverage the 'sas7bdat' R package to read SAS data directly into R, see Charlie Huang's blog @ here for a demonstration.
%macro RScript(Rscript);
data _null_;
file "&Rscript";
infile cards;
input;
put _infile_;
%mend;
%macro CallR(Rscript, Rlog);
systask command "C:\Progra~1\R\R-2.8.0\bin\R.exe CMD BATCH --vanilla --quiet
&Rscript &Rlog "
taskname=rjob1 wait status=rjobstatus1;
%mend;
/****************************/
data a;
length i 4;
array _x{100} x1-x100;
do i=1 to 300;
do j=1 to dim(_x); _x[j]=rannor(98765); end;
output; drop j;
end;
run;
proc export data=a outfile="c:\a.csv" dbms=csv; run;
%RScript(c:\rscript.r)
cards4;
dcsv <- read.csv('c:/a.csv', header=T);
dsvd<-svd(dcsv[,2:101]);
dsvd$u[1:5, 1:5];
dsvd$d[1:8];
;;;;
run;
%CallR(c:/rscript.r, c:/rlog1.txt);
data _null_;
infile "c:\rlog1.txt";
input;
put _infile_;
run;
1 comment:
That's a good technique to know.
I can think of several things on my to-do list that would benefit from combining the data munging I know how to do in SAS, with some of the machine learning packages available in R.
THANKS !!!
Post a Comment