トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-R備忘録/30

R備忘録 /状態空間モデリング/donlp2/その他のメモ

R備忘録 - 記事一覧

C言語のAPI tips 癖源列関連)

  • 投稿者: みゅ
  • カテゴリ: なし
  • 優先度: 普通
  • 状態: 完了
  • 日時: 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;
}

コメント