Как я могу получить от 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()
?
С наилучшими пожеланиями