简体   繁体   中英

What does the error “wrong sign in 'by' argument” mean when using the seq function in R?

I have a dataframe called forecast.df:

> str(forecast.df)
Classes ‘data.table’ and 'data.frame':  1027 obs. of  9 variables:
 $ group   : chr  "IT" "IT" "IT" "IT" ...
 $ Name    : chr  "name1" "name1" "name2" "name2" ...
 $ position: chr  "Specialist" "Specialist" "Analyst" "Analyst" ...
 $ job     : chr  "job1" "job2" "job3" "job4" ...
 $ dept    : chr  "IT" "FIN" "FIN" "P&C" ...
 $ bucket  : chr  "Apr-18" "Apr-18" "Apr-18" "Apr-18" ...
 $ start   : Date, format: "2018-01-02" "2018-01-02" "2018-01-15" "2018-01-22" ...
 $ end     : Date, format: "2018-04-06" "2018-01-26" "2018-04-20" "2018-04-06" ...
 $ hours    : int  149 8 109 123 44 124 125 142 70 75 ...
 - attr(*, ".internal.selfref")=<externalptr> 

And instead of a start and end date, I am trying to transform it so each row has a single date, and a job that takes 3 days has three rows associated with it (needed for the visualization we are doing.)

The code I am using is this:

tidyForecast.df <- setDT(forecast.df)[ , list(group = group
                                              , name = Name
                                              , position = position
                                              , job = job
                                              , dept = dept
                                              , bucket = bucket
                                              , hours = hours
                                              , date = seq(start
                                                           , end
                                                           , by = "day"))
                                       , by = 1:nrow(forecast.df)]

And the error I am getting when I use this is:

Error in seq.int(0, to0 - from, by) : wrong sign in 'by' argument

I have never encountered this error before, and I used this same format earlier in the code and it worked, so maybe it's something nuanced?

Found what was going wrong; there was a single instance in the 1027 observations where the start date was after the end date. This is why it worked in the past, but stopped working when I used it for new data. The "by" argument was negative because the difference between the two dates was negative.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM