如何获取R代码表达式中的所有变量?

awa*_*avi 3 r

如何解码R中的表达式以获取所有变量?

例如,如果你有:

z<-x+y;

get_all_variables(z);

[1] 'x' 'y'
Run Code Online (Sandbox Code Playgroud)

Bro*_*ieG 8

你可以使用all.vars,但你需要引用你的表达:

all.vars(quote(x + y))
# [1] "x" "y"
Run Code Online (Sandbox Code Playgroud)

你不能只是z按照你的描述使用它包含一个评估表达式(即表达式的结果),而不是表达式本身.您可以编写一个删除一个步骤的函数:

get_all_variables <- function(expr) all.vars(substitute(expr))
get_all_variables(x + y)
# [1] "x" "y"
Run Code Online (Sandbox Code Playgroud)

但是,你将无法恢复从表达z,除非你创建zz <- quote(x + y)或一些这样的.

如果你有一个字符串中的表达式,那么你可以使用@ sunny的技术结合all.vars:

all.vars(parse(text="z <- x + y"))
# [1] "z" "x" "y"
Run Code Online (Sandbox Code Playgroud)

虽然显然你也得到z了.与往常一样,不要评估任意文本,parse万一有人Bobby表示你.