Example #1
0
	SEXP saveAsText(SEXP s, SEXP New_file_name, SEXP IntPars, SEXP NANString ) 	{
		AbstractMatrix * p = getAbstractMatrixFromSEXP(s);
		if (p == NULL) {
			error_R("pointer is NULL\n");
			return R_NilValue;
		}

		string newFilename = CHAR(STRING_ELT(New_file_name,0));
		string nanString = CHAR(STRING_ELT(NANString,0));
		bool showVarNames = LOGICAL(IntPars)[0];
		bool showObsNames = LOGICAL(IntPars)[1];
		bool transpose = LOGICAL(IntPars)[2];

        AbstractMatrix *transposed = p;
        string tmpFileName,tmpFileName2;
        if (!transpose){
		    Transposer transposer;
		    tmpFileName= p->getFileName() + string("_saveAsText_tmp");
		    tmpFileName2= p->getFileName() + string("_saveAsText_tmp2");
		    p->saveAs(tmpFileName);
		    transposer.process(tmpFileName, tmpFileName2, true);
		    transposed = new FileVector(tmpFileName2, p->getCacheSizeInMb());
		}

		try {
			transposed->saveAsText(newFilename, showVarNames, showObsNames, nanString);
		} catch (int errcode) {
			error_R("can not save data to file %s\n",newFilename.c_str());
			return R_NilValue;
		}
        if (!transpose){
            delete transposed;
            unlink(tmpFileName.c_str());
            unlink(tmpFileName2.c_str());
        }

		SEXP ret;
		PROTECT(ret = allocVector(LGLSXP, 1));
		LOGICAL(ret)[0] = TRUE;

		UNPROTECT(1);
		return ret;
	}
Example #2
0
	SEXP get_cachesizeMb_R(SEXP s)
	{
		AbstractMatrix * p = getAbstractMatrixFromSEXP(s);
		if (p == NULL) {
			error_R("pointer is NULL\n");
			return R_NilValue;
		}

		unsigned long sizeMb = 0;

		try {
			sizeMb = p->getCacheSizeInMb();
		} catch (int errcode) {
			return R_NilValue;
		}

		SEXP out;
		PROTECT(out = allocVector(INTSXP, 1));
		INTEGER(out)[0] = (int) sizeMb;
		UNPROTECT(1);
		return(out);
	}