同じ理由から車はriding on top of rocketsと比べて遅いです。追加された使いやすさと安全性は、ロケットよりも車の速度をはるかに遅くしますが、爆発する可能性は低く、車の始動、操縦、ブレーキングが容易です。しかし、適切な状況(例えば、私は月に着く必要がある)では、ロケットは仕事のための適切なツールです。誰かが屋根に縛られたロケットを持った車を発明したら、何かを持っているだろう。
(あなたbechmarksからの方法で、私はlubridate
は、これらのようなはるかに遅いが、ミリ秒単位であるということであることを言わないだろう)dmy
がやっている、あなたはスピードのための違いを見ることができます何を見ているとスタート:
dmy
コマンドラインに#TYPEこれを、あなたが取得する:
>dmy
function (..., quiet = FALSE, tz = "UTC")
{
dates <- unlist(list(...))
parse_date(num_to_date(dates), make_format("dmy"), quiet = quiet,
tz = tz)
}
<environment: namespace:lubridate>
右離れて私はparse_date
とnum_to_date
とmake_format
を参照してください。これらすべての人が何であるか疑問に思います。見てみましょう:
parse_date
> parse_date
function (x, formats, quiet = FALSE, seps = find_separator(x),
tz = "UTC")
{
fmt <- guess_format(head(x, 100), formats, seps, quiet)
parsed <- as.POSIXct(strptime(x, fmt, tz = tz))
if (length(x) > 2 & !quiet)
message("Using date format ", fmt, ".")
failed <- sum(is.na(parsed)) - sum(is.na(x))
if (failed > 0) {
message(failed, " failed to parse.")
}
parsed
}
<environment: namespace:lubridate>
num_to_date
> getAnywhere(num_to_date)
A single object matching ‘num_to_date’ was found
It was found in the following places
namespace:lubridate
with value
function (x)
{
if (is.numeric(x)) {
x <- as.character(x)
x <- paste(ifelse(nchar(x)%%2 == 1, "0", ""), x, sep = "")
}
x
}
<environment: namespace:lubridate>
make_format
> getAnywhere(make_format)
A single object matching ‘make_format’ was found
It was found in the following places
namespace:lubridate
with value
function (order)
{
order <- strsplit(order, "")[[1]]
formats <- list(d = "%d", m = c("%m", "%b"), y = c("%y",
"%Y"))[order]
grid <- expand.grid(formats, KEEP.OUT.ATTRS = FALSE, stringsAsFactors = FALSE)
lapply(1:nrow(grid), function(i) unname(unlist(grid[i, ])))
}
<environment: namespace:lubridate>
うわー私たちはstrsplit-ting
、expand-ing.grid-s
、paste-ing
、ifelse-ing
、unname-ing
などに加えて、全ロッタエラーチェックゲーミングオン(ZEPソングで再生)を得ました。だから、私たちがここにあるのは、素晴らしい構文的砂糖です。 Mmmmmおいしいが、それは価格、スピードが付属しています。
はas.POSIXct
にいることの比較:
getAnywhere(as.POSIXct) #tells us to use methods to see the business
methods('as.POSIXct') #tells us all the business
as.POSIXct.date #what I believe your code is using (I don't use dates though)
as.POSICct
で起こってチェックし、より多くの内部コーディングと少ないエラーがだから私は緩和し、安全性やスピードとパワーたい依頼する必要がありますか?仕事に依存します。
私は経験が豊富だが、私の推測では、Rubridate関数は多くのことを「裏口」で処理するように設計されているということです。あなたに合理的な結果を与えてください。[バックグラウンド文書](https://github.com/hadley/lubridate)を読んで、これらの感情をエコーします。それが遅いかどうかにかかわらず、わかりませんが...同様に、 'plyr'ファミリは便宜のために書かれており、特定の状況下では基本関数と比較してパフォーマンスがあまり良くないかもしれませんが、使いやすいです! – Chase
@ RJ-実際にあなたの質問には違いを示すコードがあります。 'system.time'を使って測定することができます。 – Tommy
Noted。すぐに投稿します。 – JackeJR