gpt4 book ai didi

c - 如何将 R 字符 vector 转换为 C 字符指针?

转载 作者:太空狗 更新时间:2023-10-29 17:00:40 24 4
gpt4 key购买 nike

我正在尝试将字符 vector 从 R 传递到 C,并通过 C 字符指针引用它。但是,我不知道该使用哪种类型转换宏。下面是一个小测试来说明我的问题。

文件test.c:

#include <Rinternals.h>

SEXP test(SEXP chars)
{
char *s;

s = CHAR(chars);
return R_NilValue;
}

文件测试.R:

dyn.load("test.so")

chars <- c("A", "B")

.Call("test", chars)

R 的输出:

> source("test.R")
Error in eval(expr, envir, enclos) :
CHAR() can only be applied to a 'CHARSXP', not a 'character'

有什么线索吗?

最佳答案

字符 vector 是 STRSXP。每个单独的元素都是 CHARSXP,因此您需要类似(未测试)的东西:

const char *s;
s = CHAR(STRING_ELT(chars, 0));

参见 Handling Character Data section of Writing R Extensions . Dirk 很快就会告诉您,如果您只使用 C++ 和 Rcpp,这一切将如何变得更容易。 :)

关于c - 如何将 R 字符 vector 转换为 C 字符指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14961832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com