C のコード上で R で文字ベクトルを作成する
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; }