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

ggplotに列名を渡すのaes_stringではなく使用します。get

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 に答える