R: Построить несколько временных рядов в цикле. Ошибка в xy.coords (x, y, xlabel, ylabel, log): длины 'x' и 'y' различаются - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь построить много временных рядов из базы данных с 134 столбцами, по одному на столбец, и после этого сохранить его в файле .jpg. Я использую петлю. Я заметил, что проблемой может быть функция plot().

Некоторые данные с dput()

 structure(list(X9003 = c(3L, 8L, 6L, 6L, 2L, 3L, 6L, 2L, 6L, 
 3L), X9004 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 0L), X9007 = c(5L, 
 8L, 6L, 11L, 4L, 6L, 7L, 9L, 4L, 5L), X9009 = c(1L, 2L, 3L, 0L, 
 0L, 1L, 0L, 1L, 0L, 4L), X9010 = c(NA, NA, NA, NA, NA, NA, NA, 
 NA, 3L, 15L), X9012 = c(0L, 0L, 0L, 2L, 3L, 0L, 1L, 1L, 0L, 0L
 ), X9014 = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
 NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
 NA_integer_), X9016 = c(NA, NA, NA, NA, NA, NA, 12L, 27L, 7L, 
 12L), X9019 = c(3L, 8L, 27L, 38L, 19L, 27L, 25L, 47L, 5L, 3L), 
 X9020 = c(0L, 1L, 0L, 0L, 4L, 6L, 2L, 2L, 5L, 3L)), row.names = c(NA, 
 10L), class = "data.frame")

И

dput(dat_nombres[1:10,1:2])
structure(list(ESTACIONES = c(9003L, 9004L, 9007L, 9009L, 9010L, 
9012L, 9014L, 9016L, 9019L, 9020L), CLAVE = c(9003L, 9004L, 9007L, 
9009L, 9010L, 9012L, 9014L, 9016L, 9019L, 9020L)), row.names = c(NA, 
10L), class = "data.frame")

Мой код:

  data<- read.csv("GranizoAnualCompleto_1961-2019_columnas.csv", header = 
   TRUE)
    dat_nombres<-read.csv("Nombres_Estaciones_CLICOM.csv", header=TRUE )
    Estaciones<-dat_nombres$ESTACIONES  # List
    Estacionestmp<-data[,-1]

    # Loop

    for (i in seq_along (Estacionestmp)) { 
      serie<-ts(Estacionestmp[,i], start = 1961, frequency = 1)
      mypath<-file.path("C:","00 FENIX","03 Data", "Data_Est_Select_1961- 
       2019", "SeriesTiempo_GranizoAnual",  
                paste("Ts_Granizo4_", Estaciones[i],".jpg", sep = "")) 
      jpeg(filename = mypath)  

      plot(serie,
         col="darkblue",
         main="Días con granizo 1961-2019 \n Estación", Estaciones[i] ,
         cex.main=2,
         sub=paste("Estación",Estaciones[i]),
         cex.sub= 1.5,
         col.main="darkred",
         xlab= "Tiempo",
         ylab= "Días con granizo",
         cex.lab=0.8,
         col.axis= "gray34",
         col.lab= "gray25",
         type= "l"
         )
       dev.off() }

Сообщение об ошибке:

      Error in xy.coords(x, y, xlabel, ylabel, log) : 
      'x' and 'y' lengths differ

Но когда я просто кодирую plot(serie) (без каких-либо подробностей в функции построения графика) в цикле, не возникает проблем с результатом ифайлы создаются по определенному пути, который я определил. Недавно я использовал этот код, но на кадре данных с 20 столбцами, и он работал.

Почему эти подробности в аргументе функции plot вызывают сообщение об ошибке? Как я могу исправить цикл для создания нескольких графиков временных рядов? Есть ли лучшее решение, чтобы сделать это?

Большое вам спасибо!

РЕДАКТИРОВАТЬ: я нахожу, что проблема заключается в том, что я пытаюсь изменить основной для имени и подпасту каждого графика, проблемас Estaciones[i];Я докажу написать #, прежде чем комментировать его, и теперь это работает! Итак, я преобразовал его в список

  Estaciones_list<-as.list(Estaciones) 

и попробовал использовать этот новый список в основном для каждого графика, но он тоже не работает.

Есть предложения? Спасибо!

...