as.tibble()
がas_data_frame()
のaliasであることをどこかで読んだことを覚えていますが、正確に何がわからないのですかaliasはプログラミング用語です。ラッパーに似ていますか?
だから私の質問は、おそらくtbl_df()
とas_data_frame()
の可能な使用法の違いに帰着すると思います:もしあれば、それらの違いは何ですか?
より具体的には、(非チブル)データフレームdf
が与えられた場合、私はしばしば以下を使用してそれをチブルに変えます:
_df <- tbl_df(df)
_
しません
_df <- as_data_frame(df)
_
同じことをしますか?その場合、2つの関数tbl_df()
とas_data_frame()
を同じ結果を得るために互換的に使用できない他のケースはありますか?
tbl_df()
は引数をas_data_frame()
に転送します
それは、tbl_df()
がas_data_frame()
のラッパーまたはエイリアスであることを意味しますか? Rのドキュメントはas.tibble()
について何も言っていないようで、それがas_data_frame()
のエイリアスであることをどこで読んだか忘れていました。また、 明らかにas_tibble()
はas_data_frame()
の別名です。
これら4つの関数がすべて同じ関数である場合、1つの関数に4つの異なる名前を付ける意味は何ですか?それは役立つよりも混乱しませんか?
「混乱しているかどうか」というあなたの質問に答えるために、私はそう思う:)。
as.tibble
とas_tibble
は同じです。両方とも、単にS3メソッドas_tibble
を呼び出します。
> as.tibble
function (x, ...)
{
UseMethod("as_tibble")
}
<environment: namespace:tibble>
as_data_frame
とtbl_df
はまったく同じではありません。 tbl_df
はas_data_frame
を呼び出します:
> tbl_df
function (data)
{
as_data_frame(data)
}
<environment: namespace:dplyr>
注tbl_df
はdplyr
にあり、as_data_frame
はtibble
パッケージにあります。
> as_data_frame
function (x, ...)
{
UseMethod("as_data_frame")
}
<environment: namespace:tibble>
しかし、もちろん同じ関数を呼び出すため、「同じ」、つまりあなたが言うエイリアスです。
これで、汎用メソッドas_tibble
とas_data_frame
の違いを確認できます。まず、それぞれのメソッドを見てみましょう:
> methods(as_tibble)
[1] as_tibble.data.frame* as_tibble.default* as_tibble.list* as_tibble.matrix* as_tibble.NULL*
[6] as_tibble.poly* as_tibble.table* as_tibble.tbl_df* as_tibble.ts*
see '?methods' for accessing help and source code
> methods(as_data_frame)
[1] as_data_frame.data.frame* as_data_frame.default* as_data_frame.grouped_df* as_data_frame.list*
[5] as_data_frame.matrix* as_data_frame.NULL* as_data_frame.table* as_data_frame.tbl_cube*
[9] as_data_frame.tbl_df*
see '?methods' for accessing help and source code
code foras_tibble
をチェックアウトすると、多くのas_data_frame
メソッドの定義も確認できます。 as_tibble
は、as_data_frame
、as_tibble.ts
、およびas_tibble.poly
に対して定義されていない2つの追加メソッドを定義します。 as_data_frame
にも定義できない理由はよくわかりません。
as_data_frame
には2つの追加メソッドがあり、両方ともdplyr
で定義されています:as_data_frame.tbl_cube
およびas_data_frame.grouped_df
。
as_data_frame.tbl_cube
as.data.frame
の弱いチェックを使用して(はい、耐えてください)、as_data_frame
を呼び出します:
> getAnywhere(as_data_frame.tbl_cube)
function (x, ...)
{
as_data_frame(as.data.frame(x, ..., stringsAsFactors = FALSE))
}
<environment: namespace:dplyr>
while as_data_frame.grouped_df
は渡されたデータフレームをグループ解除します。
全体として、as_data_frame
は、ts
またはpoly
オブジェクトを処理している場合を除き、as_tibble
に追加機能を提供するものと見なされるようです。
tibbleの紹介 によれば、tibblesは_tbl_df
_に取って代わるようです。
Rのデータフレームを操作および印刷するための新しいパッケージであるtibbleを発表します。Tibblesは、data.frameの最新の再考であり、有効であることが証明された時間を保持し、そうでないものは破棄します。名前はdplyrに由来します。最初は、これらのオブジェクトを
tbl_df()
で作成しました。これは「tibble diff」と最も簡単に発音されました。[...]このパッケージは、dplyrから関数に関連するtbl_dfクラスを抽出します。
混乱を増すために、_tbl_df
_は_as_tibble
_と_as_data_frame
_の優先エイリアスである_as.tibble
_を呼び出すようになりました:( Hadley Wickhamの問題に関するコメント =、および as_tibble docs )
_> tbl_df
function (data)
{
as_tibble(data, .name_repair = "check_unique")
}
_
tbl_df()
のヘルプの説明によると、これは非推奨であり、代わりにtibble::as_tibble()
を使用する必要があります。 _as_data_frame
_および_as.tibble
_ヘルプページは両方とも_as_tibble
_にリダイレクトします。
ティブルでclass
を呼び出すと、クラス名は引き続き_tbl_df
_として表示されます。
_> as_tibble(mtcars) %>% class
[1] "tbl_df" "tbl" "data.frame"
_