В R, почему диапазон становится «Inf», когда я применяю complete.cases и пытаюсь создать новую матрицу? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь отобразить пару параметров в наборе данных. Тем не менее, я получаю ошибку бесконечности, когда я пытаюсь построить.

Похоже, что для применения complete.cases или создания нового фрейма данных range меняется на -Inf и Inf. Почему это? Как мне изменить его так, чтобы диапазоны были конечными числами и могли быть нанесены на график?

analysis <- function(){

  #input file
  input_df<-read.csv("Book1.csv")

  dput(head(input_df))

  print(range(input_df$Forecast_Error))
  print(range(input_df$YYZ.Toronto.Observed.Temp))


  #create new data file with forecast errors

  #input2_df <- input_df[,c(10,14)]
  input2_df <- data.frame(input_df$Forecast_Error, input_df$YYZ.Toronto.Observed.Temp)

  print(range(input2_df$Forecast_Error))
  print(range(input2_df$YYZ.Toronto.Observed.Temp))


  input2_df <- input2_df[complete.cases(input2_df), ]


  print(range(input2_df$Forecast_Error))
  print(range(input2_df$YYZ.Toronto.Observed.Temp))

  write.table(input2_df,"test.txt")  

  plot(input2_df$Forecast_Error, input2_df$YYZ.Toronto.Observed.Temp, main="Toronto Observed Temp vs Forecast Error", 
       xlab="Forecast error", ylab="Toronto observed Temp", pch=19)

} 

Выход:

источник ( 'PeakMissAnalysis.R') анализ ()

structure(list(Date = c(43191.95833, 43191.91667, 43191.875, 
43191.83333, 43191.79167, 43191.75), year = c(2018L, 2018L, 2018L, 
2018L, 2018L, 2018L), month = c(4L, 4L, 4L, 4L, 4L, 4L), day = c(1L, 
1L, 1L, 1L, 1L, 1L), hour = 24:19, Forecast_Error = c(-132.55, 
-141.36, -255.57, -180.2, -461.28, -359.09), YYZ.Toronto.Observed.Temp = c(-0.2, 
-0.3, -1, -0.7, -0.4, 0.2)), row.names = c(NA, 6L), class = "data.frame")
[1] -866.75  397.00
[1] -3.4  7.1
[1]  Inf -Inf
[1]  Inf -Inf
[1]  Inf -Inf
[1]  Inf -Inf
Error in plot.window(...) : need finite 'xlim' values
In addition: There were 12 warnings (use warnings() to see them)

Вот снимок экрана с данными Снимок экрана данных

1 Ответ

0 голосов
/ 04 января 2019

Я верю, что это происходит. Когда вы создаете input2_df с

 input2_df <- data.frame(input_df$Forecast_Error, input_df$YYZ.Toronto.Observed.Temp)

имена нового фрейма данных , а не Forecast_Error и YYZ.Toronto.Observed.Temp, они являются input_df.Forecast_Error и input_df.YYZ.Toronto.Observed.Temp; функция data.frame не знает, как вы хотите вызывать эти переменные. Лучше было бы

input2_df <- input_df[c('Forecast_Error', 'YYZ.Toronto.Observed.Temp')]

Теперь новые имена будут такими, как вы ожидаете. Это решение сработало, когда я проверил его в последнем утверждении диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...