我之前问过一些关于R的问题,谢谢你的回答。
我现在对 R 中的字符串(字符)更加熟悉,并且知道标量字符和向量之间存在差异。
但是我仍然有一个关于如何使用 R 的 C api 有效处理字符串的问题?这里"handle"
我的意思是为一个字符串分配内存,并读取或写入数据。
例如,下面是处理(handling)一个字符串的代码:
SEXP processing(SEXP v)
{
SEXP ans = R_NilValue;
PROTECT(v = AS_CHARACTER(v));
const char* src = CHAR(STRING_ELT(v, 0));
size_t src_len = strlen(src);
char *dst;
size_t dst_max_size;
do_some_processing(src, src_len, dst, &dst_max_size);
PROTECT(ans = NEW_CHARACTER(1));
SET_STRING_ELT(ans, 0, mkCharLen(dst, dst_max_size));
UNPROTECT(2);
return ans;
}
我怀疑用字符串向量处理字符串是否是处理字符串的最有效方法。
那么,上面的代码是最便宜的处理方式吗,使用 C API,如STRING_ELT
, NEW_CHARACTER
, SET_STRING_ELT
?这里cheap
是从time and space overhead
.
谢谢。