Last line in the following (updated) code produces the error require(raster) require(rts) require(stringr) r <- raster(ncol=100, nrow=100) values(r) <- runif(ncell(r)) stack(r)->s r->rs for(i in 1:23){ rs[]<-r[]*i addLayer(s,rs)->s print(nlayers(s)) } dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), year=sort(rep(2016:2017,12))) timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month']),"-01") strptime(timelst,format="%Y-%m-%d")->t1 rts(s,time=as.yearmon(t1))->rsts subset(rsts,'2017')->r2017 class(r2017 at time) class(rsts at time) apply.monthly(rsts,mean) -----Original Message----- From: David Winsemius [mailto:dwinsemius at comcast.net] Sent: Tuesday, 6 March 2018 11:10 AM To: Herr, Alexander (L&W, Black Mountain) <Alexander.Herr at csiro.au> Cc: r-help at r-project.org Subject: Re: [R] raster time series statistics> On Mar 5, 2018, at 3:28 PM, <Alexander.Herr at csiro.au> <Alexander.Herr at csiro.au> wrote: > > Hi List, > > The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format"I'm unable to produce that error. Which function was being evaluated to produce the error? I don't see where as.POSIXlt would have been called. You don't have any Date or POSIXt-classed variables. (I did need to also load the stringr package to get str_pad into my workspace.)> > require(raster) > require(rts) > require(stringi) > r <- raster(ncol=100, nrow=100) > values(r) <- runif(ncell(r)) > list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , > "left"),2),year=sort(rep(2016:2017,12)))->dt > stack(r)->s > r->rs > for(i in 1:23){ > rs[]<-r[]*i > addLayer(s,rs)->s > print(nlayers(s)) > } > timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) > rts(s,time=as.yearmon(timelst))->rsts > str(rsts at time) > apply.monthly(rsts,mean) > > I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. > Any suggestions? > Thanks > Herry > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law
I can't test that at the moment as I don't have the libraries. Perhaps later. Jim On Tue, Mar 6, 2018 at 11:36 AM, <Alexander.Herr at csiro.au> wrote:> Last line in the following (updated) code produces the error > require(raster) > require(rts) > require(stringr) > r <- raster(ncol=100, nrow=100) > values(r) <- runif(ncell(r)) > stack(r)->s > r->rs > for(i in 1:23){ > rs[]<-r[]*i > addLayer(s,rs)->s > print(nlayers(s)) > } > dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), > year=sort(rep(2016:2017,12))) > timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month']),"-01") > strptime(timelst,format="%Y-%m-%d")->t1 > > rts(s,time=as.yearmon(t1))->rsts > subset(rsts,'2017')->r2017 > class(r2017 at time) > class(rsts at time) > > apply.monthly(rsts,mean) > > > > -----Original Message----- > From: David Winsemius [mailto:dwinsemius at comcast.net] > Sent: Tuesday, 6 March 2018 11:10 AM > To: Herr, Alexander (L&W, Black Mountain) <Alexander.Herr at csiro.au> > Cc: r-help at r-project.org > Subject: Re: [R] raster time series statistics > > >> On Mar 5, 2018, at 3:28 PM, <Alexander.Herr at csiro.au> <Alexander.Herr at csiro.au> wrote: >> >> Hi List, >> >> The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format" > > I'm unable to produce that error. Which function was being evaluated to produce the error? I don't see where as.POSIXlt would have been called. You don't have any Date or POSIXt-classed variables. (I did need to also load the stringr package to get str_pad into my workspace.) > >> >> require(raster) >> require(rts) >> require(stringi) >> r <- raster(ncol=100, nrow=100) >> values(r) <- runif(ncell(r)) >> list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , >> "left"),2),year=sort(rep(2016:2017,12)))->dt >> stack(r)->s >> r->rs >> for(i in 1:23){ >> rs[]<-r[]*i >> addLayer(s,rs)->s >> print(nlayers(s)) >> } >> timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) >> rts(s,time=as.yearmon(timelst))->rsts >> str(rsts at time) >> apply.monthly(rsts,mean) >> >> I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. >> Any suggestions? >> Thanks >> Herry >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > David Winsemius > Alameda, CA, USA > > 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
It works if you use as.Date. But this defeates the purpose for the yearmon notion... require(raster) require(rts) require(stringr) r <- raster(ncol=100, nrow=100) values(r) <- runif(ncell(r)) stack(r)->s r->rs for(i in 1:23){ rs[]<-r[]*i addLayer(s,rs)->s print(nlayers(s)) } dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), year=sort(rep(2016:2017,12))) timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month']),"-01") strptime(timelst,format="%Y-%m-%d")->t1 rts(s,time=as.yearmon(t1))->rsts subset(rsts,'2017')->r2017 class(r2017 at time) class(rsts at time) apply.monthly(rsts,mean) # this creates error rts(s,time=as.Date(t1))->rsts1 apply.monthly(rsts1,mean) # this creates output -----Original Message----- From: Jim Lemon [mailto:drjimlemon at gmail.com] Sent: Tuesday, 6 March 2018 11:40 AM To: Herr, Alexander (L&W, Black Mountain) <Alexander.Herr at csiro.au> Cc: David Winsemius <dwinsemius at comcast.net>; r-help mailing list <r-help at r-project.org> Subject: Re: [R] raster time series statistics