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

如何获得R代码表达式中的所有变量?,r,R,如何对R中的表达式进行解码以获得所有涉及的变量 例如,如果您有: z<-x+y; get_all_variables(z); [1] 'x' 'y' z据我所知,您需要将表达式存储在字符串中。然后您可以使用getParseData解析它: txt <- "z<-x+y" sf <- srcfile("txt") df = getParseData(sf) df$text[df$token=="SYMBOL"][2:3] 您可以使用all.vars,

如何对R中的表达式进行解码以获得所有涉及的变量

例如,如果您有:

z<-x+y;

get_all_variables(z);

[1] 'x' 'y'

z据我所知,您需要将表达式存储在字符串中。然后您可以使用
getParseData
解析它:

txt <- "z<-x+y"

sf <- srcfile("txt")   
df = getParseData(sf)    
df$text[df$token=="SYMBOL"][2:3]

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

all.vars(quote(x + y))
# [1] "x" "y"
您不能在描述时仅使用
z
,因为它包含一个经过计算的表达式(即表达式的结果),而不是表达式本身。您可以编写一个删除一个步骤的函数:

get_all_variables <- function(expr) all.vars(substitute(expr))
get_all_variables(x + y)
# [1] "x" "y"

虽然很明显你也得到了
z
。一如既往,不要使用
parse
对任意文本进行评估,以防有人发现。

好的建议是不要盲目地
parse
,正如好的XKCD所示:D:D
get_all_variables <- function(expr) all.vars(substitute(expr))
get_all_variables(x + y)
# [1] "x" "y"
all.vars(parse(text="z <- x + y"))
# [1] "z" "x" "y"