2

我定义了以下函数:

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)
  }
}

带输入数据框:

a <- data.frame(id=c(1,2), cluster=c(3,4))

当我运行时:

plot_test(a)

我收到以下错误消息:

Error in get(column) : object 'column' not found

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

4

1 回答 1

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)
}
于 2013-03-27T14:29:45.743 回答