输入RDA会导致“必须提供原点”错误

时间:2018-03-11 19:53:06

标签: r

这是在Rstudio上。我理解“必须提供原因”错误的通常含义并且可以修复它。但这个有点棘手。

从离开的人那里收到~500行R代码。我根据她的规范对输入CSV进行了对齐,使用str()验证了她的测试CSV文件。一切都运行良好,直到这一行

步骤[is.na(step3)]< - 0

错误显示“in as.date.numeric(value)”'Origin'必须提供'

现在步骤包括num,int,char,Factor ...但只有一个Date,名为p-day。我假设错误是关于这个孤独的日期字段?另外:< 0使R在将NA输入0之前隐式地将Date字段转换为数字?感谢

2 个答案:

答案 0 :(得分:0)

因此as.Date.numeric函数需要一个原点。那个R.当你试图将一个零分配给一个日期分类的向量时,它被隐式调用。 R和C日期的默认原点(日期值为1)为1970-01-01。所以这可能意味着原始程序员希望这个价值成为原点的前一天。 (或者他可能不太了解R ......?)。

> dt <- as.Date(c("1970-01-01", NA))
> dt
[1] "1970-01-01" NA          
> dt[is.na(dt)] <- 0
Error in as.Date.numeric(value) : 'origin' must be supplied
> mode(dt)
[1] "numeric"
> dt[is.na(dt)] <- dt[1]-1
> dt
[1] "1970-01-01" "1969-12-31"
> dt <- as.Date(c("1970-01-01", NA))
> dt[is.na(dt)] <- dt[1]*0
Error in Ops.Date(dt[1], 0) : * not defined for "Date" objects
> dt[is.na(dt)] <- as.Date("1969-12-31")
> dt
[1] "1970-01-01" "1969-12-31"

您可以将该零值更改为as.Date(origin)或明确指定该纪元的默认开头之前的那一天。

答案 1 :(得分:0)

我只是取出日期变量,手动设置其原点并重新运行

步骤[is.na(step3)]&lt; - 0

既然向量没有丢失的数据变量,它就可以正常工作