2

我在这里问了一个问题,这让我想到了另一个问题。

在 R 中,字符串和字符之间没有根本区别。“字符串”只是一个包含一个或多个字符的字符变量。

标量字符变量和向量之间存在区别。字符向量是存储为单个对象的一组字符串。

所以我想知道如何用R的c api分配一个字符串?例如,我从中得到什么:

result = Rf_allocVector(STRSXP, dst_size);

是(的result)ascalar character variable还是a vector?或者我可以使用其他 API 来分配字符串吗?

谢谢。

4

1 回答 1

4

我们在Rcpp包中的介绍性小插曲中有一个激励性的例子(这也作为2011 年的 JSS 论文发表):

在 C API 中,您必须分配一个向量STRSXP

SEXP ab;
PROTECT(ab = allocVector(STRSXP, 2));
SET_STRING_ELT( ab, 0, mkChar("foo") );
SET_STRING_ELT( ab, 1, mkChar("bar") );
UNPROTECT(1);

这要求程序员了解PROTECTUNPROTECTSEXPallocVectorSET_STRING_ELTmkChar

而使用 Rcpp 并使用Rcpp::CharacterVector类,我们可以更简洁地表达相同的代码:

Rcpp::CharacterVector ab(2);
ab[0] = "foo";
ab[1] = "bar";
于 2013-08-30T03:41:11.363 回答