£ÒÈ÷˺Ͽ - µ»ö°ìÍ÷
- Åê¹Æ¼Ô¡§ ¤ß¤å
- ¥«¥Æ¥´¥ê¡§ ¤Ê¤·
- Í¥ÀèÅÙ¡§ ÉáÄÌ
- ¾õÂÖ¡§ ´°Î»
- Æü»þ¡§ 2009ǯ06·î09Æü 08»þ03ʬ38ÉÃ
- SET_STRING_ELT
- °Ê²¼¤Î´Ø¿ôÄêµÁ¤Ï¡ÖSET_STRING_ELT¡×¤Î»ÈÍÑÎã
SEXP strSplit(SEXP str)
{
SEXP ret;
char *xi, *pp;
char p[] =" ";
int ii;
pp = p;
xi = CHAR(STRING_ELT(str, 0));
PROTECT(ret = allocVector(STRSXP, 1+strlen(xi))); //ʸ»úÎóSTRSXP¤Ç¥Ù¥¯¥È¥ë¤ò³ÎÊÝ
SET_STRING_ELT(ret, 0, mkChar(pp)); //ÉÕÃͤ¹¤ë¤Î¤Ï¡ÖCHARSXP¡×ÊÑ¿ô¤Ç¤Ê¤¤¤È¤¤¤±¤Ê¤¤
for( ii=0; ii<strlen(xi); ii++ ){
SET_STRING_ELT(ret, ii+1, mkChar(pp));
CHAR(STRING_ELT(ret, ii+1))[0] = xi[ii];
}
UNPROTECT(1);
return ret;
}
- mkChar¤ÎÄêµÁ¡Ê¡ÖRinlinedfuns.h¡×¤ÎÃæ¡Ë
/* mkChar - make a character (CHARSXP) variable */
INLINE_FUN SEXP mkChar(const char *name)
{
SEXP c = allocString(strlen(name));
strcpy(CHAR(c), name);
return c;
}
£ÒÈ÷˺Ͽ /¾õÂÖ¶õ´Ö¥â¥Ç¥ê¥ó¥°/donlp2/¤½¤Î¾¤Î¥á¥â