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

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

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

Beitrag 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!?
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

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

Beitrag 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?
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

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

Beitrag 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...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

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

Beitrag 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.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

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

Beitrag 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?
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

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

Beitrag 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).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

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

Beitrag 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]
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

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

Beitrag von EDi »

x2 ist also ein data.frame, verhällt sicher aber komplett anders als von data.frames erwartet...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

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

Beitrag 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...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten