Я манипулирую тремя date objects (class : "POSIXlt" "POSIXt")
. Два первых вектора (start
и end
) определяют начальную и конечную точки некоторых интервалов, а третий вектор (inc
) соответствует некоторым инцидентам. То, что я хочу обнаружить, это то, какой инцидент произошел в какой интервал. Я уменьшил размер своих векторов, чтобы предоставить рабочий пример. В противном случае реальная длина векторов действительно велика.
start <- c("2007-09-16 18:40:27 GMT","2007-09-28 23:53:55 GMT", "2007-10-25 05:23:01 GMT")
end <- c("2007-09-19 18:40:27 GMT", "2007-10-01 23:53:55 GMT","2007-10-28 05:23:01 GMT")
inc <- c("2007-09-17 18:45:00 GMT", "2007-09-17 19:00:00 GMT", "2007-09-17 19:15:00 GMT", "2007-09-17 19:30:00 GMT")
Вот простой код для определения соответствующих дат:
quel.eve <- sapply( inc, function(s)
which(start <= s & end >=s) )
Когда я использую
‘Which (начало <=« 2007-09-17 18:45:00 по Гринвичу »и конец> = 2007-09-17 18:45:00 по Гринвичу)’ работает правильно и возвращает 1 . Проблема возникает, только если я хочу применить «Саппи». это дает странные результаты:
$sec
integer(0)
$min
integer(0)
$hour
integer(0)
$mday
integer(0)
$mon
integer(0)
$year
integer(0)
$wday
integer(0)
$yday
integer(0)
$isdst
integer(0)
В этом вопросе я обнаружил, что, поскольку «POSIXct» уже является списком по своей природе, «sapply» не может с ним справиться. Элементы векторов, представленные здесь, скопированы из моего консоля, и поэтому они похожи на символы. В моей программе это определенно объекты Date.
Есть ли способ, часть из преобразования их в POSIXct
, чтобы сделать это? Ваша помощь будет оценена.