Seite 2 von 4

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Fr Sep 27, 2019 10:16 am
von Athomas
EDi hat geschrieben: Fr Sep 27, 2019 1:29 am Soweit mal meine unsortieren Gedanken...
Hmmm - könnte man das so zusammenfassen: im Prinzip stimmst Du den Ausführungen von Norman Matloff zu, bist aber mit einigen der verwendeten Beispiele nicht glücklich!?

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Fr Sep 27, 2019 10:29 am
von Athomas
EDi hat geschrieben: Fr Sep 27, 2019 1:29 am Mein Rat: Sobald ihr aus dem tidyverse rausgeht: zu data.frame konvertieren! (Gilt aber auch für data.tables).
Ich bin mir nicht sicher, ob ich den Klammerausdruck richtig verstehe - aber was könnte jemanden dazu bringen, die data.table-Eigenschaft abzuklemmen und lediglich die data.frame-Komponente nutzen zu wollen?

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Fr Sep 27, 2019 6:14 pm
von EDi
aber was könnte jemanden dazu bringen, die data.table-Eigenschaft abzuklemmen und lediglich die data.frame-Komponente nutzen zu wollen?
Einige Funktionen erwarten data.frame als Eingabe (und kein data.table oder tibble). Wenn man trotzdem ein tibble oder data.table übergibt kann das zu Nebeneffekten führen die man eventuell nicht bemerkt...

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Fr Sep 27, 2019 6:17 pm
von EDi
im Prinzip stimmst Du den Ausführungen von Norman Matloff zu, bist aber mit einigen der verwendeten Beispiele nicht glücklich!?
Nein. Ich stimme mit einigen Punkten überein in anderen nicht. Das betrifft nicht nur Beispiele.

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Sa Sep 28, 2019 1:19 pm
von Athomas
EDi hat geschrieben: Fr Sep 27, 2019 6:14 pm Einige Funktionen erwarten data.frame als Eingabe (und kein data.table oder tibble). Wenn man trotzdem ein tibble oder data.table übergibt kann das zu Nebeneffekten führen die man eventuell nicht bemerkt...
Interessant, in Bezug auf data.table ist mir das neu - und ich finde es erstaunlich, weil ja jede data.table gleichzeitig auch ein data.frame ist!
Hast Du dafür ein Beispiel/eine Quelle?

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Sa Sep 28, 2019 5:28 pm
von EDi
Z.B. https://stackoverflow.com/questions/23256177/r-caret-renames-column-in-data-table-after-training/23256599#23256599

data.table ist da aber etwas besser als tibbles (hat mich zumindest weniger oft gebissen).

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Sa Sep 28, 2019 5:47 pm
von EDi
weil ja jede data.table gleichzeitig auch ein data.frame ist!
Dann sollte ja das hier immer das gleiche ergeben wie mit einem data.frame:

Code: Alles auswählen

library(tibble)
library(data.table)

df <- data.frame(a = 1:3, b = letters[1:3], c =  factor(1:3), stringsAsFactors = FALSE)
tbl <- tibble(a = 1:3, b = letters[1:3], c =  factor(1:3))
dt <- data.table(a = 1:3, b = letters[1:3], c =  factor(1:3)) 

df["a"]
df[1:2, "b"]
df[1:2, "c"]

tbl["a"]
tbl[1:2, "b"]
tbl[1:2, "c"]

dt["a"]
dt[1:2, "b"]
dt[1:2, "c"]
Ich bleibe dabei, wenn Funktionen (außerhalb vom tidyverse oder data.table) ein data.frame erwarten ist es sicherer, wenn man tibbles/data.tables zu data.frames umwandelt. Man kann nämlich nicht sicher sein, dass die Funktionen mit tibbles/data.tables korrekt umgehen können.
weil ja jede data.table gleichzeitig auch ein data.frame ist
Letztendlich passiert das unter der Haube (neue Methoden für für Klassen, print.tbl ist zum Beispiel anders als print.data.frame).

Code: Alles auswählen

x <- data.frame(a = 1:2, b = 3:4)

x2 <- x
class(x2) <- c('alwaysfirst', 'data.frame')
`[.alwaysfirst` <- function(x, i, j, ...) {
  i = 1
  NextMethod()
}


is.data.frame(x)
is.data.frame(x2)
inherits(x, "data.frame")
inherits(x2, "data.frame")

x[2]
x2[2]

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Sa Sep 28, 2019 5:48 pm
von EDi
x2 ist also ein data.frame, verhällt sicher aber komplett anders als von data.frames erwartet...

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Sa Sep 28, 2019 5:50 pm
von EDi
BTW: Wenn man jemand zur Verzeiflung bringen will, dann versteckt man sowas

Code: Alles auswählen

`+` <- `*`
10+2
in der .Rprofile von jemanden oder führt das kurz auf seiner Konsole aus...

Re: An opinionated view of the Tidyverse "dialect" of the R language, and its promotion by RStudio.

Verfasst: Sa Sep 28, 2019 9:34 pm
von jogo
:twisted: :lol: