0

我之前问过一些关于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.

谢谢。

4

0 回答 0