R Null приводит к подмножеству данных

В R у меня есть петля. Я хотел бы установить подкадр данных переменной в цикле. Я хотел бы, чтобы мой код выглядел так:

library(maptools)
for(theMonth in 600: 0)
{
  Inspections.mp <- readShapeLines("InspDates2")
  counties.mp <- readShapePoly("Boundary")
  plot(counties.mp, axes=FALSE, border="gray")
  data1 <-Inspections.mp[Inspections.mp$MonthInt == theMonth]
  lines(data1, col="blue", lwd=1)
}

К сожалению, это возвращает все записи в data1 и используя строку

data1 <-Inspections.mp[Inspections.mp$MonthInt == theMonth,]

вызывает следующую ошибку: Ошибка в bb[1, ]: неверное количество измерений

Я могу, однако, получить нужные записи, используя только целое число, но мне нужна переменная

library(maptools)
for(theMonth in 600: 0)
{
  Inspections.mp <- readShapeLines("InspDates2")
  counties.mp <- readShapePoly("Boundary")
  plot(counties.mp, axes=FALSE, border="gray")
  data1 <-Inspections.mp[Inspections.mp$MonthInt == 60,]
  lines(data1, col="blue", lwd=1)
}

1 ответ

Решение

Проблема здесь, кажется, нулевое подмножество. Этого можно избежать, используя оператор try/catch.

library(maptools)

Inspections.mp <- readShapeLines("InspDates2")
counties.mp <- readShapePoly("Boundary")
for(theMonth in 600: 0)
{
  plot(counties.mp, axes=FALSE, border="gray")

  result <- tryCatch({
    data1 <-Inspections.mp[Inspections.mp$MonthInt == theMonth,]
    lines(data1, col="blue", lwd=1)
    },warning = function(war){
      print("WARNING")
    },error = function (err)
    {
      print("Error")
    }, finally = {
      print("Finally")
    })
}
Другие вопросы по тегам