以下是可复制的示例(至少在我的计算机上)
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"
欢迎大家集思广益
欢呼
它没有为我工作,直到我加载了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