R_Cソースで文字ベクトルを生成 - RとLinuxと...

RとLinuxと...


R_Cソースで文字ベクトルを生成

Rの備忘録

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の備忘録(1824d)
Last-modified: 2011-03-29 (火) 22:47:49 (2818d)