"Aniko Szabo" <[EMAIL PROTECTED]> writes: > I am sorry about the confusion, I was too hasty. > asInteger(coerceVector(x,INTSXP)) does not work after all. Here are more > details of what I am trying to accomplish: I have a matrix with column > names that are actually known to be integers (because I set them so > myself in the R code, say, colnames(mat) <- 1:10. Of course, they become > converted to character strings.) > > The relevant part of my code used to be: > > SEXP MyFunction(SEXP mat); > int warn, minY > SEXP rl, cl; > char *rn, *cn; > GetMatrixDimnames(mat, &rl, &cl, &rn, &cn); > minY = IntegerFromString(VECTOR_ELT(cl,0), &warn); > if (warn > 0) error("Names of popmatrix columns are not > integers"); > > Running some tests it appears that VECTOR_ELT(cl,0) is CHARSXP (which I > wound up using without even knowing it). > I tried replacing the IntegerFromString part with both > asInteger(VECTOR_ELT(cl,0)) and with > asInteger(coerceVector(VECTOR_ELT(cl,0),INTSXP)), but as you surmised, > since VECTOR_ELT(cl,0) is CHARSXP, it does not work. > > So, how could I get the actual values in the column names?
How about: SEXP colnums; int *ivals; PROTECT(colnums = coerceVector(cl, INTSXP)); ivals = INTEGER(colnums); Here you convert the STRSXP cl into an INTSXP. If you want the actual integer values, use the ivals pointer. + seth -- Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center http://bioconductor.org ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel