[R] Capturing output of a C executable

David Winsemius dwinsemius at comcast.net
Mon Feb 3 19:27:34 CET 2014


On Feb 2, 2014, at 5:09 PM, Dennis Fisher wrote:

> R 3.0.1
> OS X
> 
> Colleagues,
> 
> I am experimenting with incorporating C code into R.  After compiling the C code with: 
> 	R CMD SHLIB -o FILE.so FILE.c
> and executing:
> 	dyn.load(“FILE.so”)
> (without any errors), I execute the following R functions in a terminal window:
> 	READSAS 	<- function(sourcefile) .C("readsas", sourcefile) 
> 	OUTPUT 		<- READSAS("../SASFILES/sdrug.sas7bdat") 
> R / C then reads a sas7bdat file and sends the contents to the terminal window.
> 
> I expected OUTPUT to contain the text that appear in the terminal window (i.e., the contents of the file).  But, that is not the case; OUTPUT contains:
> 	[[1]]
> 	[1] "../SASFILES/sdrug.sas7bdat"
> It is not clear to my how to capture that appears in the terminal window.
> 
> Ultimately, I may need to modify the C code so that the output goes to a file, which I then read into R.  However, it would be better if I did not need to modify the C code.
> Does anyone have any ideas of how I can capture this output within R?

I wonder if this is a follow-up to the suggestion to look at ReadStat?: https://github.com/WizardMac/ReadStat

I could imagine calling it from R but then directing results to a comma separated file along the lines of the second example. If my guess is correct, you might assist the R community and get valuable advice by posting your source and Makefile on R-devel.

-- 
David.
> 
> Dennis
> 
> Dennis Fisher MD
> P < (The "P Less Than" Company)
> Phone: 1-866-PLessThan (1-866-753-7784)
> Fax: 1-866-PLessThan (1-866-753-7784)
> www.PLessThan.com

David Winsemius
Alameda, CA, USA




More information about the R-help mailing list