這是integer
和numeric
之間的差異。請注意,您的向量列爲integer
。
所以見證:
R> library(anytime) R> R> ivec <- c(1487319525L, 1487323025L, 1487325865L) R> str(ivec) int [1:3] 1487319525 1487323025 1487325865 R> anytime(ivec) [1] NA NA NA R> R> fvec <- as.numeric(ivec) ## convert to numeric R> str(fvec) num [1:3] 1.49e+09 1.49e+09 1.49e+09 R> anytime(fvec) [1] "2017-02-17 02:18:45 CST" "2017-02-17 03:17:05 CST" "2017-02-17 04:04:25 CST" R>
在這裏,我們輾轉騰挪。 數字如果在一定範圍內,則取值爲POSIXct
。因爲C++是強類型的,所以你的整數向量確實可以做到這個測試。
而且,我們不能只是轉換integer
到numeric
,我們靠這個工作太:
R> anytime(20170217)
[1] "2017-02-17 CST"
R>
編輯:我屈服了。 github當前的開發版本確實如此:
R> library(anytime)
R> ivec <- c(1487319525L, 1487323025L, 1487325865L)
R> anytime(ivec)
[1] "2017-02-17 02:18:45 CST" "2017-02-17 03:17:05 CST" "2017-02-17 04:04:25 CST"
R>
您能設置一個整數> 4000000000L的檢查,然後將被視爲推定時間? –
也許吧。也許不會。它可能有副作用。但是如你所知,這個軟件包是開源的,並且有一個測試套件,所以你也可以試試它。我知道,擁有POSIXct值的'integer'類型的變量非常罕見...因爲後者是一個'numeric'。正如我演示的,很容易轉換回'數字'。 –
我添加了一個[新的分支](https://github.com/eddelbuettel/anytime/tree/feature/large_ints),它可能會成爲一個新功能。 –