R_Cソースで文字ベクトルを生成 のバックアップ差分(No.2) - アールメカブ

アールメカブ


R_Cソースで文字ベクトルを生成 のバックアップ差分(No.2)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[Rの備忘録]]

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;
	
 
 }