这是可再现的例子(至少在我的电脑上)
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"
欢迎所有想法!
干杯
答案 0 :(得分:0)
在我加载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 supplied