CallExternal {base} | R Documentation |
Modern Interfaces to C/C++ code
Description
Functions to pass R objects to compiled C/C++ code that has been loaded into R.
Usage
.Call(.NAME, ..., PACKAGE)
.External(.NAME, ..., PACKAGE)
Arguments
.NAME |
a character string giving the name of a C function,
or an object of class |
... |
arguments to be passed to the compiled code. Up to 65 for
|
PACKAGE |
if supplied, confine the search for a character string
This argument follows This is intended to add safety for packages, which can ensure by using this argument that no other package can override their external symbols, and also speeds up the search (see ‘Note’). |
Details
The functions are used to call compiled code which makes use of internal R objects, passing the arguments to the code as a sequence of R objects. They assume C calling conventions, so can usually also be used for C++ code.
For details about how to write code to use with these functions see
the chapter on ‘System and foreign language interfaces’ in
the ‘Writing R Extensions’ manual. They differ in the way the
arguments are passed to the C code: .External
allows for a
variable or unlimited number of arguments.
These functions are primitive, and .NAME
is always
matched to the first argument supplied (which should not be named).
For clarity, avoid using names in the arguments passed to ...
that match or partially match .NAME
.
Value
An R object constructed in the compiled code.
Header files for external code
Writing code for use with these functions will need to use internal R structures defined in ‘Rinternals.h’ and/or the macros in ‘Rdefines.h’.
Note
If one of these functions is to be used frequently, do specify
PACKAGE
(to confine the search to a single DLL) or pass
.NAME
as one of the native symbol objects. Searching for
symbols can take a long time, especially when many namespaces are loaded.
You may see PACKAGE = "base"
for symbols linked into R. Do
not use this in your own code: such symbols are not part of the API
and may be changed without warning.
PACKAGE = ""
used to be accepted (but was undocumented): it is
now an error.
References
Chambers, J. M. (1998)
Programming with Data. A Guide to the S Language.
Springer. (.Call
.)
See Also
The ‘Writing R Extensions’ manual.