[R] Capturing output of a C executable
Duncan Murdoch
murdoch.duncan at gmail.com
Tue Feb 4 13:29:57 CET 2014
On 14-02-03 5:44 PM, Phil Spector wrote:
> Dennis -
> The return value from .C will almost never be useful.
Are you limiting this to the specific situation Dennis described, or
making a more general claim? The more general claim is clearly false.
Lots of packages return useful results using .C calls. The idea is that
all arguments to the C function are passed by reference and may be
modified in place, so you just pass a vector to receive the result.
That's equivalent to what you describe below, but I think it seems
simpler, since "passing an address" from R sounds like an exotic
operation, not the norm.
Duncan Murdoch
If you want to bring
> results from the C environment into R, you need to do it by passing an address to
> .C which will receive the result.
> You may find this document helpful when interfacing R to C:
>
> http://www.stat.berkeley.edu/classes/s243/calling.pdf
>
> - Phil Spector
> Statistical Computing Facility
> Department of Statistics
> UC Berkeley
> spector at stat.berkeley.edu
>
>
> On Sun, 2 Feb 2014, 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?
>>
>> 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
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list