首页 > 解决方案 > 在 R 中使用 seq 函数时,错误“在 'by' 参数中签名错误”是什么意思?

问题描述

我有一个名为 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> 

而不是开始和结束日期,我正在尝试对其进行转换,以便每一行都有一个日期,并且需要 3 天的工作具有与之关联的三行(我们正在做的可视化需要。)

我正在使用的代码是这样的:

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)]

我使用它时遇到的错误是:

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

我以前从未遇到过此错误,并且我在代码的早期使用了相同的格式并且它有效,所以也许它有细微差别?

标签: rdataframe

解决方案


发现出了什么问题;在 1027 个观察中,有一个实例的开始日期晚于结束日期。这就是为什么它过去有效,但当我将它用于新数据时停止工作。“by”参数是否定的,因为两个日期之间的差异是负的。


推荐阅读