1
リストのリストがあります。各サブリストは行を表します。私はこれをデータフレームに変換し、すべての列のタイプを保持したいと思います。これは非常に簡単であるように感じますが、私は問題にぶち当たっています。リストのリストをデータフレームに変換します。各リストは行を表し、タイプを保持します。
私の第2の解決策は最良のアプローチですか?
たぶんl1 <- list(id="a", date=as.Date("2017-01-01"), value=10)
l2 <- list(id="b", date=as.Date("2017-01-02"), value=12)
list_of_lists <- list(l1,l2)
# Does not work - dates are converted to integers
do.call(rbind.data.frame, list_of_lists)
# Does work, but have to explicitly pass stringsAsFactors,
# and seems inefficient
list_of_dfs <- lapply(list_of_lists, data.frame, stringsAsFactors=FALSE)
do.call(rbind, list_of_dfs)
を使用することができます。 'res < - do.call(rbind.data.frame、list_of_lists);のようなものです。 res $ date < - as.Date(res $ date、origin = "1970-01-01") ' –
ありがとう - 良いアイデア。最初の日付の型が保持されない理由は分かりますか? – RobinL
'?rbind.data.frame'で文書化されています:" *入力が持つ可能性のあるクラスはすべて破棄されます。* "したがって、Dateクラスの基礎となるストレージモードは数値で(storage.mode(as.Date (Sys.Date())) ')ので、クラスが削除されると、それは数値になります(もちろん、日付に戻って変換される可能性があります)。 –