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 に答える