Как получить имя переменной R в C (подставить в C)? - PullRequest
1 голос
/ 19 января 2020

Как я могу получить от 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:

Однако я пытаюсь найти способ получить доступ к имени объекта. В документации я нашел решение только для именованных аргументов:

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

И я хотел бы найти C эквивалент для substitute():

> substitute(x1)
x1

Я пытался substitute() из Rinternals.h, но он всегда возвращал список с тем, что выше. Кто-нибудь знает как это делать? Может быть findVarInFrame()?

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...