2013-12-06 7 views
0

У меня есть переменные в dataframe, и я пытаюсь построить функцию, которая позволяет мне строить переменную в данных без красноречивой записи, data$variablename.Функция построения в R

plt=function(x){ 
    plot(data$date,as.name(paste("data$",x,sep="")),type="l",xlab="Population",ylab="Time") 
} 

R продолжает думать, что моя y-переменная является именем, а не переменной. Как я могу сказать, что вход оси y в функции plot является именем, а не фактической переменной?

+0

Используйте '[' указать переменную у вместо. 'data [, x]' возможно. – A5C1D2H2I1M1N2O1R2T1

+0

Я не знал, что вы могли бы вызвать такую ​​переменную. Я попытался ввести 'data [, population]' и 'data [, data $ population]' он дает мне «объект» не найденную ошибку. – jessica

+0

Попробуйте 'data [," population "]' вместо этого. Подробнее см. «? Извлечение». – A5C1D2H2I1M1N2O1R2T1

ответ

2

Я хотел бы попробовать что-то вроде следующих (двух предложенных вариантов - раскомментирована один будет моим предпочтительным подходом):

plt <- function(x, data = mydf) { 
    x <- deparse(substitute(x)) 
# with(data, plot(date, get(x), type = "l", xlab = "Population", ylab = "Time")) 
    plot(data[, "date"], data[, x], type = "l", xlab = "Population", ylab = "Time") 
} 

При использовании data[, x], x должен быть вектор символов, следовательно, использование deparse(substitute(x)) в первой строке функции. Таким образом, вы должны ввести столбец y без кавычек. Я также добавил аргумент «data», чтобы указать, с каким набором данных вы имеете дело.

Попробуйте функцию с этим:

set.seed(1) 
mydf <- data.frame(date = 1:100, A = rnorm(100), B = rnorm(100), C = rnorm(100)) 

plt(A) 
plt(B) 
plt(C) 
Смежные вопросы