The R Project SVN R-packages

Rev

Rev 4160 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4160 Rev 4798
Line 49... Line 49...
49
 
49
 
50
/****************************************************************************
50
/****************************************************************************
51
 * SMAT FUNCTIONS
51
 * SMAT FUNCTIONS
52
 ****************************************************************************/
52
 ****************************************************************************/
53
SEXP sdf_as_matrix(SEXP sdf, SEXP name) {
53
SEXP sdf_as_matrix(SEXP sdf, SEXP name) {
54
    char *iname, *mat_iname, *type;
54
    char *mat_iname, *type;
55
    const char *dectype, *colname, *vectype = NULL;
55
    const char *iname, *dectype, *colname, *vectype = NULL;
56
    sqlite3_stmt *stmt, *stmt2;
56
    sqlite3_stmt *stmt, *stmt2;
57
    int ncols, nrows, i;
57
    int ncols, nrows, i;
58
    SEXP ret, names;
58
    SEXP ret, names;
59
 
59
 
60
    iname = SDF_INAME(sdf);
60
    iname = SDF_INAME(sdf);
Line 143... Line 143...
143
 
143
 
144
/* "decorate" passed svec w/ rownames & colnames to make it a sqlite.matrix */
144
/* "decorate" passed svec w/ rownames & colnames to make it a sqlite.matrix */
145
SEXP sdf_create_smat(SEXP svec, SEXP dimnames) {
145
SEXP sdf_create_smat(SEXP svec, SEXP dimnames) {
146
    SEXP tmp, ret = svec;
146
    SEXP tmp, ret = svec;
147
    sqlite3_stmt *stmt;
147
    sqlite3_stmt *stmt;
148
    char *mat_iname;
148
    const char *mat_iname;
149
    int i, nrows, ncols;
149
    int i, nrows, ncols;
150
 
150
 
151
    mat_iname = SDF_INAME(svec);
151
    mat_iname = SDF_INAME(svec);
152
    if (!USE_SDF1(mat_iname, TRUE, TRUE)) return R_NilValue;
152
    if (!USE_SDF1(mat_iname, TRUE, TRUE)) return R_NilValue;
153
 
153
 
Line 158... Line 158...
158
    sprintf(g_sql_buf[0], "insert into [%s].sdf_matrix_rownames(name) values (?)", mat_iname);
158
    sprintf(g_sql_buf[0], "insert into [%s].sdf_matrix_rownames(name) values (?)", mat_iname);
159
    sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, NULL);
159
    sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, NULL);
160
    tmp = VECTOR_ELT(dimnames, 0);
160
    tmp = VECTOR_ELT(dimnames, 0);
161
 
161
 
162
    if (inherits(tmp, "sqlite.vector")) {
162
    if (inherits(tmp, "sqlite.vector")) {
163
        char *iname = SDF_INAME(tmp), *tblname = SVEC_TBLNAME(tmp),
163
        const char *iname = SDF_INAME(tmp), *tblname = SVEC_TBLNAME(tmp),
164
             *varname = SVEC_VARNAME(tmp);
164
                   *varname = SVEC_VARNAME(tmp);
165
        USE_SDF1(iname, TRUE, TRUE);
165
        USE_SDF1(iname, TRUE, TRUE);
166
        nrows = _get_row_count2(iname, TRUE);
166
        nrows = _get_row_count2(iname, TRUE);
167
        sprintf(g_sql_buf[0], "insert into [%s].sdf_matrix_rownames(name) "
167
        sprintf(g_sql_buf[0], "insert into [%s].sdf_matrix_rownames(name) "
168
                "select [%s] from [%s].[%s]", mat_iname, varname, iname, tblname);
168
                "select [%s] from [%s].[%s]", mat_iname, varname, iname, tblname);
169
        _sqlite_error(_sqlite_exec(g_sql_buf[0]));
169
        _sqlite_error(_sqlite_exec(g_sql_buf[0]));
Line 222... Line 222...
222
}
222
}
223
 
223
 
224
SEXP sdf_get_matrix_columns(SEXP smat, SEXP cols) {
224
SEXP sdf_get_matrix_columns(SEXP smat, SEXP cols) {
225
    SEXP colnames, ret;
225
    SEXP colnames, ret;
226
    sqlite3_stmt *stmt1, *stmt2;
226
    sqlite3_stmt *stmt1, *stmt2;
227
    char *mat_iname, *mat2_iname;
227
    const char *mat_iname, *coltype, *vectype;
228
    const char *coltype, *vectype;
228
    char *mat2_iname;
229
    int i, nrows, ncols, index, idxlen, ci_len, ci_actual_len;
229
    int i, nrows, ncols, index, idxlen, ci_len, ci_actual_len;
230
    int *col_indices;
230
    int *col_indices;
231
 
231
 
232
    mat_iname = SDF_INAME(smat);
232
    mat_iname = SDF_INAME(smat);
233
    if (!USE_SDF1(mat_iname, TRUE, TRUE)) return R_NilValue;
233
    if (!USE_SDF1(mat_iname, TRUE, TRUE)) return R_NilValue;