Как сделать возвращаемое значение функции для легенды - PullRequest
1 голос
/ 15 марта 2012

Я сделал функцию, которая отображает данные из файла CSV.

Я хотел бы получить метки в легенде из имен переменных, используемых при вызове функции.

С кодом ниже, names(dataPlot1) использует имена "temp1" "temp2" "temp3" в легенде. Я хочу сделать это "х", "у", "г". Как я могу это сделать?

temperature <- function(temp1,temp2,temp3)
{
    dataPlot1 <- data.frame(temp1,temp2,temp3)
    matplot(dataPlot1,axes=T,frame=T,type="l",
            xlab="time (hour)",ylab="temperature(C)",
            main=names(dataPlot1))
    lines(dataPlot1[1],lty=1,col="blue")
    lines(dataPlot1[2],lty=2,col="red")
    lines(dataPlot1[3],lty=2,col="forestgreen")  
    legend("topright",names(dataPlot1),lty=c(1,2,2),
            col=c("blue","red","forestgreen"))

}
temperature(x,y,z)

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Возможно, это:

temperature <- function(temp1,temp2,temp3)
{ t1 <- deparse(substitute(temp1))
  t2 <- deparse(substitute(temp2))
  t3 <- deparse(substitute(temp3)) 
    dataPlot1 <- data.frame(temp1,temp2,temp3)
    matplot(dataPlot1,axes=T,frame=T,type="l",
            xlab="time (hour)",ylab="temperature(C)",
            main=names(dataPlot1))
    lines(dataPlot1[1],lty=1,col="blue")
    lines(dataPlot1[2],lty=2,col="red")
    lines(dataPlot1[3],lty=2,col="forestgreen")  
    legend("topright", c(t1,t2,t3), lty=c(1,2,2),
            col=c("blue","red","forestgreen"))
0 голосов
/ 15 марта 2012

У вас есть несколько вариантов:

  1. Назовите ваши данные: dataPlot1 <- data.frame(x=temp1, y=temp2, z=temp3)
  2. Назначьте имена позже: `colnames (dataPlot1) <- c (" x "," y "," z ")) </li>
  3. Предоставить требуемый текст в качестве аргумента legend= для вызова legend().
  4. Измените вашу функцию и добавьте четвертый аргумент, скажем legtxt=c("x","y","z") и передайте его legend.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...