I think you are asking why calling asChar on a CHARSXP gives NA_STRING. In particular, the calls you mention *are* perfectly OK and work as intended.
As barely documented in R-exts, asChar is designed for vector arguments: a CHARSXP is not a vector. It gives NA_STRING for invalid inputs. The asXXXX family of functions are designed to coerce as necessary user inputs, and CHARSXPs are not visible at R level. In general, with internal functions you are expected to read the code to find out what they do before using them. On Mon, 23 Jul 2007, Oleg Sklyar wrote: > Any idea why CHAR(asChar(STRING_ELT( produces NA whereas > CHAR(STRING_ELT( gets a pointer to a string? It's generally expected > that STRING_ELT should already be a character, It is required to be a CHARSXP, but 'character' usually refers to STRSXP. > but why the coercion does not work? Here is a simple example (consistent > over R2.5.1-R2.6 rev 42284, I didn't check earlier versions, but it used > to be different in 2.4): There is no R '2.4', but the behaviour of asChar was the same in R 2.4.0 except for the adding of SYMSXP at ------------- r40358 | maechler | 2007-01-04 11:07:04 +0000 (Thu, 04 Jan 2007) | 1 line eliminate CHAR_STAR in methods/src/ as per old "todo" ------------- which message does not help me at all. Perhaps Martin can explain? > install.packages("inline") > > library(inline) > > sig <- signature(x="character") > code1 <- " > for (int i = 0; i < LENGTH(x); i++ ) > Rprintf(\"%s\\n\", CHAR(STRING_ELT(x, i))); > return R_NilValue; > " > > code2 <- " > for (int i = 0; i < LENGTH(x); i++ ) > Rprintf(\"%s\\n\", CHAR(asChar(STRING_ELT(x, i)))); > return R_NilValue; > " > > setCMethod(c("p1","p2"), list(sig,sig), list(code1,code2)) > > > #---------------------------------------------------------- > p1(c("str1", "str2")) > # str1 > # str2 > # NULL > > p2(c("str1", "str2")) > # NA > # NA > # NULL > > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel