下面是可重现的例子(至少在我的电脑上)
a <- as.Date(as.Date("2012-10-01"):as.Date("2013-03-25"))
myFun <- function (x) {
return(sqrt(abs(as.numeric(x-as.Date("2013-01-01")))))
}for (i in 1:length(a)) { print(myFun(a[i])) }工作正常,但是
sapply(a,myFun)失败并显示错误消息
"Error in `-.Date`(x, as.Date("2013-01-01")) :
Can only subtract from Date objects"欢迎所有的想法!
干杯
发布于 2013-03-15 02:36:05
直到我加载了zoo包,它才对我起作用。在此之前,这是因为日期和数字之间的强制问题,并且没有提供origin。如果您尝试detach(package:zoo)并运行:
a <- as.Date("2012-10-01"):as.Date("2013-10-01")
myFun <- function (x) {
return(sqrt(abs( x - as.numeric( as.Date( "2013-01-01" ) ) ) ) )
}
sapply(a,myFun)我得到的结果与加载zoo包时所做的相同。原因是(在我的R会话上)在没有运行zoo的情况下,第一个命令会导致:
as.Date(as.Date("2012-10-01"):as.Date("2013-03-25"))结果如下:
Error in as.Date.numeric(as.Date("2012-10-01"):as.Date("2013-03-25")) :
'origin' must be suppliedhttps://stackoverflow.com/questions/15417256
复制相似问题