£ÒÈ÷˺Ͽ - µ»ö°ìÍ÷
- Åê¹Æ¼Ô¡§ ¤ß¤å
- ¥«¥Æ¥´¥ê¡§ ¤Ê¤·
- Í¥ÀèÅÙ¡§ ÉáÄÌ
- ¾õÂÖ¡§ ´°Î»
- Æü»þ¡§ 2009ǯ06·î09Æü 08»þ28ʬ13ÉÃ
- ʸ»úÎó¤òeval¤¹¤ë¡¦Ê¸»úÎó¤ò¼Â¹Ô¤¹¤ë
strsplit(paste(" ", string1, sep=""), NULL)[[1]]
char *cmd2 = "strsplit(paste(\" \", string1, sep=\"\"), NULL)[[1]]"; //ʸ»úÎó¤òºîÀ®
SET_STRING_ELT(cv, 0, mkChar(cmd2)); //ʸ»úÎóÊÑ¿ô¤ËÆþ¤ì¤ë
call = R_ParseVector(cv, 1, &status); //ɾ²Á¤·¤¿¤¤¼°¡Ê¤¢¤ë¤¤¤Ï²þ¹Ô¡Ë¤Î¸Ä¿ô¤¬¤ï¤«¤Ã¤Æ¤¤¤ë¾ì¹ç
//call = parseString(cmd1, &parts, &status); //¤ï¤«¤é¤Ê¤¤¾ì¹ç¡Ê¤Ä¤Þ¤ê¤É¤ó¤Êʸ»úÎó¤¬Íè¤Æ¤âÎɤ¤¾ì¹ç¡Ë¤Ï¤³¤ì
PROTECT(call2 = lang2(install("eval"), call)); //eval´Ø¿ô¤Ë¥»¥Ã¥È¤¹¤ë
PROTECT(s1 = eval(call2, rho)); //ɾ²Á¤¹¤ë¤È¡¢Ìá¤êÃͤ¬s1¤ËÆþ¤ë
- ¤³¤ì¤ò»È¤¦¤È¡¢£Ò¦¤ÇÄêµÁ¤·¤¿´Ø¿ô¤ò£Ã¤ÎÃæ¤Çɾ²Á¡Ê¼Â¹Ô¡Ë¤Ç¤¤ë
SEXP parseString(char *s, int *parts, ParseStatus *status) {
int maxParts=1;
char *c=s;
SEXP cv, pr = R_NilValue;
while (*c) {
if (*c=='\n' || *c==';') maxParts++;
c++;
}
PROTECT(cv=allocVector(STRSXP, 1));
SET_VECTOR_ELT(cv, 0, mkChar(s));
while (maxParts>0) {
pr=R_ParseVector(cv, maxParts, status);
if (*status!=PARSE_INCOMPLETE && *status!=PARSE_EOF) break;
maxParts--;
}
UNPROTECT(1);
*parts=maxParts;
return pr;
}
- ¡ÖSEXP pr = R_NilValue;¡×¤Î¤è¤¦¤Ë¡¢¥Ý¥¤¥ó¥¿¤Î¾ì½ê¤òÀè¤Ë³ÎÊݤ·¤Æ¤ª¤±¤Ð¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿Àè¤Ç¡¢PROTECT¤·¤Ê¤¯¤Æ¤â¡¢¤è¤¤¤Î¤«¤Ê¡¦¡¦¡¦¡©
£ÒÈ÷˺Ͽ /¾õÂÖ¶õ´Ö¥â¥Ç¥ê¥ó¥°/donlp2/¤½¤Î¾¤Î¥á¥â