SEXP R_LinearStatistic(SEXP x, SEXP y, SEXP weights) { /* the return value; a vector of type REALSXP */ SEXP ans; /* dimensions */ int n, p, q; /* * only a basic check: we do not coerce objects since this * function is for internal use only */ if (!isReal(x) || !isReal(y) || !isReal(weights)) error("LinStat: arguments are not of type REALSXP"); n = nrow(y); if (nrow(x) != n || LENGTH(weights) != n) error("LinStat: dimensions don't match"); q = ncol(y); p = ncol(x); PROTECT(ans = allocVector(REALSXP, p*q)); C_LinearStatistic(REAL(x), p, REAL(y), q, REAL(weights), n, REAL(ans)); UNPROTECT(1); return(ans); }
void C_LinStatExpCov(const double *x, const int p, const double *y, const int q, const double *weights, const int n, const int cexpcovinf, SEXP expcovinf, SEXP ans) { C_LinearStatistic(x, p, y, q, weights, n, REAL(GET_SLOT(ans, PL2_linearstatisticSym))); if (cexpcovinf) C_ExpectCovarInfluence(y, q, weights, n, expcovinf); C_ExpectCovarLinearStatistic(x, p, y, q, weights, n, expcovinf, ans); }