访问R中函数中的变量名

yin*_*lon 2 r

我已经定义了以下功能:

plot_test <- function(data) {
  columns <- names(data)
  for (column in columns) {
    p <- ggplot(data, aes(x=get(column), y=cluster))
    p <- p + geom_jitter(position = position_jitter(height = .1, width=0.1))
    show(p)
  }
}
Run Code Online (Sandbox Code Playgroud)

带输入数据框:

a <- data.frame(id=c(1,2), cluster=c(3,4))
Run Code Online (Sandbox Code Playgroud)

当我跑:

plot_test(a)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Error in get(column) : object 'column' not found
Run Code Online (Sandbox Code Playgroud)

我没有适当地在for循环中确定列变量.任何帮助,将不胜感激.谢谢.

Dav*_*son 6

使用aes_string而不是get将列名称传递给ggplot:

for (column in columns) {
    p <- ggplot(data, aes_string(x=column, y="cluster"))
    p <- p + geom_jitter(position = position_jitter(height = .1, width=0.1))
    show(p)
}
Run Code Online (Sandbox Code Playgroud)