如何解码R中的表达式以获取所有变量?
例如,如果你有:
z<-x+y;
get_all_variables(z);
[1] 'x' 'y'
Run Code Online (Sandbox Code Playgroud)
你可以使用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,除非你创建z的z <- 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表示你.
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |