100

日付のリストをリストから外すと、日付が数値に戻ります。それは正常ですか?as.Dateを再適用する以外の回避策はありますか?

> dd <- as.Date(c("2013-01-01", "2013-02-01", "2013-03-01"))
> class(dd)
[1] "Date"
> unlist(dd)
[1] "2013-01-01" "2013-02-01" "2013-03-01"
> list(dd)
[[1]]
[1] "2013-01-01" "2013-02-01" "2013-03-01"

> unlist(list(dd))
[1] 15706 15737 15765

これはバグですか?

4

2 に答える 2

111

do.callリストを使って「何かをする」ための便利な関数です。この場合、を使用して連結しcます。リストからのdata.framesが単一のビッグdata.frameに入るcbindのは珍しいことではありません。rbind

ここで行っているのは、実際にはddリストの要素を連結することです。これはに類似していc(dd[[1]], dd[[2]])ます。c関数または文字として提供できることに注意してください。

> dd <- list(dd, dd)
> (d <- do.call("c", dd))
[1] "2013-01-01" "2013-02-01" "2013-03-01" "2013-01-01" "2013-02-01" "2013-03-01"
> class(d) # proof that class is still Date
[1] "Date"
于 2013-03-27T13:19:13.357 に答える
13

または、purrrを使用して、日付のリストをベクトル保存タイプにフラット化します。

list(as.Date(c("2013-01-01", "2013-02-01", "2013-03-01"))) %>% purrr::reduce(c)

結果は

[1] "2013-01-01" "2013-02-01" "2013-03-01"
于 2020-10-29T16:19:58.203 に答える