У меня есть вложенный цикл for
, который проходит через каждую строку в наблюдении 800 000+ data.frame
, называемом alltrx
. Он проверяет, находится ли каждое значение в отформатированном Posixct
столбце TIME
в alltrx
в пределах интервала дат, созданного из значений в секунду data.frame
, называемых long
. Если условие истинно, цикл берет номер строки из «правильной» строки, для которой интервал дат был получен из long
, и помещает его в новый столбец alltrx$Survey
. Насколько я могу судить, это работает, но я попробовал с индикатором выполнения и получил только 4% за один час. Я хотел бы спросить, есть ли у кого-нибудь идеи о том, как ускорить это? У меня также есть alltrx
в качестве списка списков, где данные разделены между списками (таким образом, что имеет смысл для моего проекта).
Я смотрел на это и это , но это, казалось, не давало большого шанса на повышение скорости, в то время как второе не очень помогало ...
.... см. Мой код ниже
for (i in 1:nrow(alltrx)){
for (j in 1:nrow(long)) {
if(alltrx$TIME2[i] %within%
(interval(ymd(long$V2[j]), ymd(long$V1[j])))){alltrx$Survey[i]<-row.name(long[j])}
}
}
Я заинтересован в улучшении моего кода цикла или других альтернатив кодирования, которые могут иметь более высокую производительность, таких как lapply
, спасибо за любую помощь. Я не предоставил набор данных, так как он не кажется необходимым, но могу сделать это, если кто-то укажет на важность его наличия.