gpt4 book ai didi

c - 将 SEXP 结构转储到控制台

转载 作者:行者123 更新时间:2023-12-01 23:04:00 26 4
gpt4 key购买 nike

我正在使用 C 中的 R 内部接口(interface)。我需要从 C 中分析 SEXP 的内容,但我不知道确切的 SEXP 结构。有没有一种简单的方法(或一些现有代码)可以将 SEXP 转储到控制台或文件中的低级 C 对象?

最佳答案

您可以从 R 调用一个名为 inspect 的内部函数,例如

x <- list(1, 2, 3)
.Internal(inspect(x))

这给出

@7fd37292f970 19 VECSXP g0c3 [NAM(2)] (len=3, tl=0)
@7fd370b9bd28 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 1
@7fd370b9bcf8 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 2
@7fd370b9bcc8 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 3

您可以从 C/C++ 调用它,如下所示:

#define R_NO_REMAP

#include <R.h>
#include <Rinternals.h>

void inspect(SEXP x) {
SEXP inspectCall = PROTECT(Rf_lang2(Rf_install("inspect"), x));
SEXP dotInternalCall = PROTECT(Rf_lang2(Rf_install(".Internal"), inspectCall));
Rf_eval(dotInternalCall, R_GlobalEnv);
UNPROTECT(2);
}

您还可以查看 Rf_PrintValue,这是一种调用 print() 的机制。

关于c - 将 SEXP 结构转储到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087442/

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