Was ist der Unterschied zwischen as.tibble (), as_data_frame () und tbl_df ()?

9

Ich erinnere mich, irgendwo gelesen zu haben, dass as.tibble() ein Alias ​​ für as_data_frame() ist, aber ich weiß nicht, was genau ein Alias ​​ in der Programmiersprache ist. Ähnelt es einem Wrapper?

Ich denke also, dass meine Frage wahrscheinlich auf den Unterschied in den möglichen Verwendungen zwischen tbl_df() und as_data_frame() zurückzuführen ist: Was sind die Unterschiede zwischen ihnen, falls vorhanden?

Genauer gesagt, wenn ich ein (nicht-tibbles) Datenframe df verwende, mache ich es oft zu einem tibble, indem ich Folgendes benutze:

%Vor%

Würde nicht

%Vor%

das gleiche tun? Wenn ja, gibt es andere Fälle, in denen die beiden Funktionen tbl_df() und as_data_frame() nicht synonym verwendet werden können, um das gleiche Ergebnis zu erhalten?

Die R-Dokumentation sagt das

  

tbl_df() leitet das Argument an as_data_frame()

weiter

bedeutet das, dass tbl_df() ein Wrapper oder Alias ​​für as_data_frame() ist? R Dokumentation scheint nichts über as.tibble() zu sagen und ich habe vergessen, wo ich gelesen habe, dass es ein Alias ​​für as_data_frame() war. Außerdem ist anscheinend as_tibble() ein weiterer Alias ​​für as_data_frame() .

Wenn diese vier Funktionen wirklich alle die gleiche Funktion haben, was ist der Sinn, wenn man einer Funktion vier verschiedene Namen gibt? Ist das nicht verwirrender als hilfreich?

    
Chill2Macht 12.05.2017, 16:19
quelle

1 Antwort

8

Um Ihre Frage "ob es verwirrend ist" zu beantworten, denke ich ja.

as.tibble und as_tibble sind gleich; rufen Sie einfach die S3-Methode as_tibble :

auf %Vor%

as_data_frame und tbl_df sind nicht genau gleich; tbl_df ruft as_data_frame auf:

%Vor%

Hinweis tbl_df ist in dplyr , während as_data_frame im Paket tibble ist:

%Vor%

aber natürlich ruft es die gleiche Funktion auf, also sind sie "die selben" oder Aliase wie du sagst.

Nun können wir die Unterschiede zwischen den generischen Methoden as_tibble und as_data_frame betrachten. Zuerst betrachten wir die Methoden von jedem:

%Vor%

Wenn Sie den Code für as_tibble aufrufen, können Sie das tun siehe auch die Definitionen für viele der as_data_frame -Methoden. as_tibble definiert zwei zusätzliche Methoden, die nicht für as_data_frame , as_tibble.ts und as_tibble.poly definiert sind. Ich bin nicht wirklich sicher, warum sie nicht auch für as_data_frame definiert werden konnten.

as_data_frame hat zwei zusätzliche Methoden, die beide in dplyr : as_data_frame.tbl_cube und as_data_frame.grouped_df definiert sind.

as_data_frame.tbl_cube verwende die schwächere Überprüfung von as.data.frame (ja, ertragen Sie mit mir), um dann as_data_frame :

aufzurufen %Vor%

, während as_data_frame.grouped_df den übergebenen Datenframe nicht gruppiert.

Insgesamt scheint as_data_frame eine zusätzliche Funktionalität gegenüber as_tibble zu bieten, es sei denn, Sie haben mit ts oder poly Objekten zu tun.

    
rsmith54 12.05.2017, 19:34
quelle