Нулевые объекты в списке при разделении данных с помощью R - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в R и получил задание провести некоторые базовые исследования с использованием RI, импортировал CSV-файл с данными о направлении ветра и скорости ветра и хочу разделить скорость ветра по направлению

Итак, я создал этот бит кода R

north.ls = list()
east.ls  = list()
south.ls = list()
west.ls = list()
i = as.integer(1)
print("start")
for (i in 1:length(DD)) {
  if (DD[i] >=315 & DD[i] <= 360 | DD[i] >= 1 & DD < 45) {
    north.ls[[i]] = as.integer(FH[i])
    print("nord")
  }
  if(DD[i] >=45 & DD[i] < 135){
    east.ls[[i]] = as.integer(FH[i])
    print("east")
  }
  if(DD[[i]] >= 145 & DD[i] < 225){
    south.ls[[i]] = as.integer(FH[i])
    print("south")
  } 
  if(DD[[i]] >=225 & DD[i] < 315){
    west.ls[[i]] = as.integer(FH[i])
    print("west")
  }
}

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

Надеюсь, вы понимаете мое объяснение

Заранее спасибо

1 Ответ

0 голосов
/ 09 октября 2018

Когда вы создаете новый элемент в списке в позиции [i] без элементов в предыдущих позициях, все эти позиции получают значения NULL.

Вот несколько лучший способ получить то, что вы пытаетесь сделать (я делаю некоторые образованные предположения о вашей структуре данных и ваших целях), не вводя эти NULL:

north.ls<-FH[(DD>=315 & DD <= 360) | (DD >= 1 & DD < 45)]
east.ls<-FH[DD>=45 & DD < 135]
south.ls<-FH[DD>=135 & DD < 235]
west.ls<-FH[DD>=235 & DD < 315]

Это даст вам четыре вектора, которые делят данные в FH на север, восток, юг и запад на основе данных в DD.Длина каждого из четырех списков НЕ равна длине FH или DD (или друг друга), и не должно быть введено NULL, если они уже не находятся в FH.

...