The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
All functions callable from R must return a SEXP
, and
only take arguments which are of type SEXP
(or just
void
if there are no arguments).
The SEXP
type is an S-Expression
. Every
value in R is an SEXP
, and there is information stored
within the type to indicate what data is stored within it.
The TYPEOF()
macro and type2char()
function
within C will be useful to identify what sort of data is in the
SEXP.
The full list of SEXP
types are in Rinternals.h
#define NILSXP 0 /* nil = NULL */
#define SYMSXP 1 /* symbols */
#define LISTSXP 2 /* lists of dotted pairs */
#define CLOSXP 3 /* closures */
#define ENVSXP 4 /* environments */
#define PROMSXP 5 /* promises: [un]evaluated closure arguments */
#define LANGSXP 6 /* language constructs (special lists) */
#define SPECIALSXP 7 /* special forms */
#define BUILTINSXP 8 /* builtin non-special forms */
#define CHARSXP 9 /* "scalar" string type (internal only)*/
#define LGLSXP 10 /* logical vectors */
/* 11 and 12 were factors and ordered factors in the 1990s */
#define INTSXP 13 /* integer vectors */
#define REALSXP 14 /* real variables */
#define CPLXSXP 15 /* complex variables */
#define STRSXP 16 /* string vectors */
#define DOTSXP 17 /* dot-dot-dot object */
#define ANYSXP 18 /* make "any" args work.
Used in specifying types for symbol
registration to mean anything is okay */
#define VECSXP 19 /* generic vectors */
#define EXPRSXP 20 /* expressions vectors */
#define BCODESXP 21 /* byte code */
#define EXTPTRSXP 22 /* external pointer */
#define WEAKREFSXP 23 /* weak reference */
#define RAWSXP 24 /* raw bytes */
#define OBJSXP 25 /* object, non-vector */
#define S4SXP 25 /* same as OBJSXP, retained for back compatability */
/* used for detecting PROTECT issues in memory.c */
#define NEWSXP 30 /* fresh node created in new page */
#define FREESXP 31 /* node released by GC */
#define FUNSXP 99 /* Closure or Builtin or Special */
#include <R.h>
#include <Rinternals.h>
SEXP what_sexp_is_this(SEXP x) {
Rprintf("SEXPTYPE: %i = %s\n", TYPEOF(x), type2char(TYPEOF(x)));
return R_NilValue;
}
what_sexp_is_this(1L)
#> SEXPTYPE: 13 = integer
what_sexp_is_this(TRUE)
#> SEXPTYPE: 10 = logical
what_sexp_is_this(c(1.1, 2.2))
#> SEXPTYPE: 14 = double
what_sexp_is_this(list(1, 2, 3))
#> SEXPTYPE: 19 = list
what_sexp_is_this("hello")
#> SEXPTYPE: 16 = character
what_sexp_is_this(mtcars)
#> SEXPTYPE: 19 = list
what_sexp_is_this(mean)
#> SEXPTYPE: 3 = closure
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.