私は問題に遭遇し、ハックでそれを解決することができました。問題を理解し、うまくいけばハックを取り除きたいと思います。
問題を再現しようとしても無駄だったので、ここでは言葉で十分です。
Rで2つのデータフレームをrbind
しようとしていますその結果はリストではなくデータフレームである必要があります。私はほとんどのスクリプトでrbind
を使用しており、これまで問題が発生したことはありません。
しかし、今日、私はrbindを2つのデータフレーム、たとえばfoo
とbar
に適用し、list
foobar
を返しました。これを修正するために使用するハックは、次のようにfoo
とbar
をデータフレームに再度強制変換することです。
rbind(data.frame(foo), data.frame(bar))
これは機能しますが、foo
とbar
の両方がすでにdata.framesであるのになぜ明示的に変換する必要があるのか知りたいです。
私の質問は、両方の入力がdata.framesの場合、どの「一般的な」シナリオでrbind
がlist
を返すかということです。
rbind(A,A)
とrbind(B,B)
を見てデバッグしてみました。どちらの場合も、list
ではなくデータフレームを返します。では、なぜrbind(A,B)
はlist
を返すのでしょうか?
ありがとう!
データフレームの1つが実際に tibble である場合は、dplyr::bind_rows()
の代わりに rbind()
を使用する必要があります。 dplyr::bind_rows()
は、特にチブルを処理するように設計されています(一般にデータフレームでも機能します)。 tibblesはtidyverseの発明であるため、rbind()
のような基本関数と必ずしも完全に互換性があるとは限りません(私自身、このような動作が発生することを、あなたが立ち上げるまで気づいていませんでした)。
2つの関数の違い、およびdplyr::bind_rows()
ではなくrbind()
を使用する理由の詳細については、 ここ を参照してください。