0

这是可复制的示例(至少在我的计算机上)

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"

欢迎所有想法!

干杯

4

1 回答 1

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)

当我加载 package 时,我会做同样的事情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
于 2013-03-14T18:36:05.360 回答