r - 解析和替换如何工作以允许访问对象名称?

标签 r

我的问题是关于以下代码:

myfunc <- function(v1) {
    deparse(substitute(v1))
}

myfunc(foo)
[1] "foo"

我输入了 ?deparse?substitute进入 R 并获得以下结果:
deparse = Turn unevaluated expressions into character strings.


substitute = returns the parse tree for the (unevaluated) expression expr, 
substituting any variables bound in env.

我似乎不太了解这种语言。有人能够简化这些描述的技术方面,以便我可以开始欣赏这两个函数如何协同工作以允许我们做一些很酷的事情,比如访问对象的变量名?

最佳答案

我也在为此挣扎(d)。 myplot()来自 ?substitute 的示例很有帮助。在那里,他们定义:

myplot <- function(x, y)
plot(x, y, xlab = deparse(substitute(x)),
   ylab = deparse(substitute(y)))

打电话
myplot(x=1:10, y = rnorm(10))



enter image description here

而替代方案
x = 1:10
y = rnorm(10)
plot(x, y, xlab = x, ylab = y)



enter image description here

希望这显示了什么 deparse(substitute())是用来。在 plot版本,xlabylab参数是用于生成 x 的任何内容的输出和 y . myplot知道为 xlab 传递“实际参数的字符串版本给函数”和 ylab . (引自 ?substitute)

关于r - 解析和替换如何工作以允许访问对象名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37646382/

相关文章:

r - 在 R 中剥离向量中的非 A-Z 字符

r - 当连接变量存在重复项时进行内连接

根据前一个变量的值重命名变量

r - R中潜在狄利克雷分配(LDA)中特定TOPIC的TERM概率是多少

css - 在 R 中的 Shiny 应用程序中更改整个字体的最简单方法?

r - 当 x 轴是一个因素时,用 ggplot 添加一条垂直线

r - 如何在R中将.rds文件转换为.csv而不丢失特殊字符?

r - 显示两个或多个对象之间差异的功能

R导入excel表,单元格a1成为新列中的行值

r - 如何在 R 中对指数分布使用卡方检验