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

seq(first(as.Date(dat$updateTime)), last(as.Date(dat$updateTime)), by = "day")

代码解读:
dat是一个数据框,其中存在一列是updateTime,找到updateTime中的最大值和最小值,从而用seq(dateTime_1, dateTime_2, by= ‘’)的方式,构建一个连续的时间列(注意:不是ts类型的那种时间序列)。
seq用法详参:seq函数的时间用法 R document
出现报错如题:

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

经过查找,报错可能性有:

  1. 时间格式不对
    R中默认的时间格式是:yyyy-mm-dd(“2012-02-06”),若使用了格式为其他格式的时间,例如:dd-mm-yyyy(“01-11-1979”),则会报错。
    修正方法详参:Stackoverflow 中的同名问题
  2. 另外一种报错原因就很蛋疼了…(我遇到的情况)
    在代码中,我使用了first, last函数,而由于我的date是倒序排列的,所以出现了一种情况是,我取出来的第一个数字是比最后一个数字要大的。这种报错原因约等于:
seq(as.Date('2020-04-21'),as.Date('2020-1-23'),by="day")

的报错原因。
将代码更改为:

seq(as.Date('2020-04-21'),as.Date('2020-1-23'),by="-1 day")

更改序列为递减序列,最后正常运行。

P.S: 写代码的时候脑子还是不能不清醒…祝大家debug顺利

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值