私はdata.framesのリストを積み重ねたいですが、列に異なるデータ型があることがあります。私は操作が最も低い共通分母(私の場合は通常character
)に強制することを望みます。異なるデータ型のbind_rows
このスタッキングは、ほぼすべてのdata.framesを受け入れるpackage functionの内部で行われます。 ds_a$x
をbind_rows()
の前の文字に強制的に変換する能力は、現実的にはありません。
ds_a <- data.frame(
x = 1:6,
stringsAsFactors = FALSE
)
ds_b <- data.frame(
x = c("z1", "z2"),
stringsAsFactors = FALSE
)
# These four implementations throw:
# Error: Can not automatically convert from integer to character in column "x".
ds_1 <- dplyr::bind_rows(ds_a, ds_b)
ds_2 <- dplyr::bind_rows(ds_b, ds_a)
ds_3 <- dplyr::bind_rows(list(ds_a, ds_b))
ds_4 <- dplyr::union_all(ds_a, ds_b)
私は出力を単一の文字ベクトルとdata.frameになりたい:
x
1 1
2 2
3 3
4 4
5 5
6 6
7 z1
8 z2
私は(赤帽)データベースからメタデータを使用するには、いくつかの長期的な計画を持っています強要に影響を与えることができますが、私は積み上げ作業のための短期的な一般的な解決策があることを望んでいます。
から
rbindlist
を使用することができます。バッチ処理されたAPI呼び出しをまとめてバインドしたいと思うので、すべて同じ名前にする必要があります。 – Benjamin私は通常、このような状況の要因に変換しますが、すべての列をfactor列に変換してから変換すると、速度にどの程度影響するかわかりません。 – Hao