【问题标题】:Pass arguments to function by string replacement [duplicate]通过字符串替换将参数传递给函数[重复]
【发布时间】:2014-01-21 08:56:26
【问题描述】:

你是如何穿越eval()、parse() 和其他功能的沼泽的?这应该很简单,因此我省略了数据。

原始代码,包含数据集中的属性和图表标题的解决方法。

require(ggplot2)
ggplot(data = qs) + geom_bar(aes(x = G74_Q0005b)) + 
      ggtitle(attr(qs, "variable.labels")[grep("G74_Q0005b", names(qs))])

这是一个简单地传递变量名的函数:

plot.label <- function(var){
  ggplot(data = qs) + geom_bar(aes(x = var)) + 
    ggtitle(attr(qs, "variable.labels")[grep(var, names(qs))])
  }

但显然只有var 是不够的,我不是程序员。

可能相关?

【问题讨论】:

  • 第二个问题似乎是重复的。我让别人决定。

标签: string r function parsing ggplot2


【解决方案1】:

美学部分需要使用aes_string。这需要一个包含字符串的变量作为参数。

plot.label <- function(var){
  ggplot(data = qs) + geom_bar(aes_string(x = var)) + 
    ggtitle(attr(qs, "variable.labels")[grep(var, names(qs))])
  }

【讨论】:

  • 是的,这行得通……这是 ggplot 特质吗?
  • @Rico 不确定我会称其为特质。在aes()(不带引号的变量名)中指定变量的“正常”方式可能更不寻常,因为它使用非标准评估。专门为此目的提供了aes_string 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2011-05-12
  • 2017-02-19
  • 1970-01-01
  • 2021-11-10
  • 2016-10-26
相关资源
最近更新 更多