麻烦与sapply

时间:2013-03-14 18:23:31

标签: r datetime zoo sapply

这是可再现的例子(至少在我的电脑上)

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"

欢迎所有想法!

干杯

1 个答案:

答案 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