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
spec...@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@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@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@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.