R_Cソースで文字ベクトルを生成
C のコード上で R で文字ベクトルを作成する
以下,情報が古いです.たとえば mkChar()ではなく mkCahrCE()を使うべきです.
SEXP vec1 // Rオブジェクトを用意して PROTECT(vec1 = allocVector(STRSXP,1)) // 要素数が 1 個の文字用ベクトルをメモリに割り当てる SET_STRING_ELT (vefc1, 0, mkChar("hoge")) // そのベクトルの最初の要素に文字列 hoge を代入する
/* R CMD SHLIB R_utf8.c -L/usr/local/lib/ */ #include <R.h> #include <Rdefines.h> #include <Rinternals.h> SEXP myutf8() { SEXP myint, mychar; int *p_myint; PROTECT(myint = NEW_INTEGER(3)); p_myint = INTEGER_POINTER(myint); p_myint[0] = 1; p_myint[1] = 2; p_myint[2] = 3; PROTECT(mychar = allocVector(STRSXP,3));// pa++; 2 SET_STRING_ELT(mychar, 0, mkCharCE("一", CE_UTF8 )); SET_STRING_ELT(mychar, 1, mkCharCE("二", CE_UTF8)); SET_STRING_ELT(mychar, 2, mkCharCE("三", CE_UTF8)); SET_NAMES(myint, mychar);// UNPROTECT(2); return myint; }
Link: R_old_tips2(1977d)
Rの備忘録(4013d)
Last-modified: 2011-03-29 (火) 22:47:49 (5008d)