1. ホーム
  2. r

[解決済み] なぜunlist()はRで日付を消してしまうのか?

2023-01-03 02:34:27

質問

日付のリストを解除すると、数値に戻ってしまいます。それは正常ですか?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

これはバグですか?

どのように解決するのですか?

do.call は、リストを使って何かするのに便利な関数です。この例では、連結するために c . よくあるのは cbind または rbind のデータフレームを1つの大きなデータフレームに変換します。

ここで行っているのは、実際に 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"