2013-03-27 1 views
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) 
    } 
} 

с рамкой ввода данных:

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

, когда я бегу:

plot_test(a) 

Я получаю следующее сообщение об ошибке:

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

Я не рассматриваю переменную столбца в цикле for соответственно. Любая помощь будет оценена по достоинству. Благодарю.

+3

колонки объемного звучания в 'get' кавычками, например 'get (" column ")' –

+1

@ SimonO101: Это не сработает для этой цели - 'get (" column ")' будет выполнен, чтобы искать столбец с именем 'column' в фрейме данных данных. –

+0

@DavidRobinson Я понял, что набрал его. Сначала я оценивал, что было синтаксически неправильным. Я +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) 
} 
+0

вот и все! Спасибо. – yindalon

Смежные вопросы