首页 > 解决方案 > 如何在 C 中获取 R 的变量名(在 C 中替换)?

问题描述

如何从 C 中获取用作函数参数的对象名称?我有 C 中的示例代码,可以让我访问被调用的函数的名称:

#include <Rinternals.h>

SEXP xname(SEXP x)
{
       const char *fun_name = CHAR(PRINTNAME(CAR(x)));
       x =  CDR(x);
       const char *arg_name = isNull(TAG(x)) ? "" : CHAR(PRINTNAME(TAG(x)));

       Rprintf("fn_name: %s, arg_name: %s\n", fun_name, arg_name);
       return R_NilValue;
}

从R:

> xname <- function(...) invisible(.External("xname", ...))
> x1 = 123
> xname(x1)
fn_name: xname, var_name:

但是,我正在尝试找到一种访问对象名称的方法。在文档中,我找到了一个仅用于命名 args 的解决方案:

> xname(arg = x1)
fn_name: xname, var_name: arg

我想找到 C 等效项substitute()

> substitute(x1)
x1

我试过substitute()Rinternals.h,但它总是返回一个包含上述内容的列表。有谁知道该怎么做?也许findVarInFrame()

此致

标签: rc

解决方案


推荐阅读