Saya perlu membuat pengaturan waktu shift untuk 15 hari ke depan

Jadi saya mencoba seperti ini:

library(lubridate)  
c = matrix(nrow=360, ncol=45)  
date1 <- ymd_hms("2000-01-01 00:00:00",tz = "US/Eastern")  
date2 <- ymd_hms("2000-01-01 08:00:00",tz = "US/Eastern")  
date3<- ymd_hms("2000-01-01 16:00:00",tz = "US/Eastern")  
date4<- ymd_hms("2000-02-01 00:00:00",tz = "US/Eastern")  

Saya membuat tiga interval shift untuk day1 sebagai berikut:

shift1<-interval(date1,date2)  
shift2<-interval(date2,date3)  
shift3<-interval(date4,date3)  

Dan saya ingin membuat interval serupa untuk 14 hari ke depan. Saya mencoba seperti ini:

end<-as.matrix(rep(c(shift1,shift2,shift3)+days(1),14)))

Ini kesalahannya

Kesalahan dalam per@.Data + num : Operator aritmatika tidak ditentukan untuk kelas 'numerik' dan 'Interval': konversikan satu ke numerik atau kelas rentang waktu yang cocok.

r
1
Kalyan Pavan 10 Maret 2019, 07:58

1 menjawab

Jawaban Terbaik

Bagaimana dengan solusi keluarga apply ini?

library(lubridate)    
date1 <- ymd_hms("2000-01-01 00:00:00",tz = "US/Eastern")  



end<- lapply(0:14, function(x){
                              lapply(c(0,8,16), function(y){
                                interval((date1+days(x)+hours(y)), (date1+days(x)+hours(y+8)))
                              })
                              })

lapply(0:14) akan membuat grup interval dari hari ke 0 hingga hari ke-14 mulai dari date1 lapply(c(0,8,16) akan membuat n+1 interval di mana n = c(0,8,16) mulai dari tanggal1 + hari X (X ditentukan oleh lapply pertama)

Hasilnya akan menjadi list of lists di mana misalnya end[[8]][3] akan menjadi interval ke-3 dari hari ke-8 mulai date1

Terbaik!

0
LocoGris 10 Maret 2019, 09:48