Для цикла и функции последовательности для создания списка списков дат возвращает более короткий список, чем ожидалось - PullRequest
0 голосов
/ 12 июня 2019

Я использую цикл for для создания списка дат с последовательностью дат от открытой даты до закрытой даты. Моя проблема в том, что список содержит 41 элемент, а не 63 элемента, которые мне нужны. Логика кажется отчасти правильной, но вывод неполон.

Я пытаюсь создать линейный график в R, который показывает, сколько инцидентов информационной безопасности открыто в определенный момент времени.

Я прочитал CSV с данными. Создайте три вектора из столбцов: дата инцидента была открыта, дата инцидента была закрыта (если инцидент не был закрыт, я заменяю NA текущей датой) и номер инцидента. Я использую lubridate для форматирования двух векторов даты как даты.

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

Моя проблема в том, что список содержит 41 элемент, а не 63 элемента, которые мне нужны.

library(lubridate)

Чтение данных реестра инцидентов

incidents.data <- read.csv("incidents2019.csv")

#Create vector for columns that with data of incident open date, incident closed dates and incident number
incident.open <- dmy(incidents.data$Date.Reported.to.InfoSecGov..Day.B.)
incident.closed <- mdy(incidents.data$Closing.Date..Day.I.)
incident.number <- incidents.data$Incident.Num

Нет NA, заменено, в процессе закрытия даты с сегодняшней датой.

incident.closed.full <- incident.closed %>% replace_na(as.Date        ("2019/6/12"))

Создать набор данных с датами

data <- data.frame(incident.number, incident.open, incident.closed.full)

n <- nrow(data)
mylist <- list()

for(i in 1:n){
  mylist[[i]] <- seq(as.Date(data$incident.open[i]), as.Date     (data$incident.closed.full[i]), "days")
}

d <- do.call("c", mylist)

df <- data.frame(table(d))

Данные графика

plot(df$d, df$Freq, main = "Information Security Incidents In Process",     xlab="Date", ylab="# of InfoSec Incidents in Process")
lines(df$Freq)

Я получаю это сообщение об ошибке:

Ошибка в seq.int (0, to0 - from, by): неверный вход в аргумент 'by'

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