Ich habe vor kurzem den Pipe-Operator %>%
entdeckt, die Code lesbarer machen kann. Hier ist meine MWE.R: Unterteilen Sie eine Auswahl mit der Pipe%>% und Platzhalter
library(dplyr) # for the pipe operator
library(lsr) # for the cohensD function
set.seed(4) # make it reproducible
dat <- data.frame( # create data frame
subj = c(1:6),
pre = sample(1:6, replace = TRUE),
post = sample(1:6, replace = TRUE)
)
dat %>% select(pre, post) %>% sapply(., mean) # works as expected
Aber ich kämpfen, um das Rohr Operator in diesem speziellen Fall mit
dat %>% select(pre, post) %>% cohensD(.$pre, .$post) # piping returns an error
cohensD(dat$pre, dat$post) # classical way works fine
Warum ist es nicht möglich, Spalten der Teilmenge der Platzhalter .
in Kombination mit mit $
? Lohnt es sich, diese Zeile mit einem Pipe-Operator %>%
zu schreiben, oder kompliziert es die Syntax? Die klassische Schreibweise scheint prägnanter.
Sie erhalten wahrscheinlich einen Fehler, weil der '%>%' Rohroperator die linke Seite als das erste Argument von die rechte Seite. Aber es scheint, dass die 'cohensD'-Funktion kein erstes Argument hat, das ein data.frame akzeptiert. IMO, es ist sauberer, dies in Basis-R-Syntax zu schreiben –
Das würde funktionieren: 'dat%>% wählen (vor, nach)%>% {cohenD (. $ Pre,. $ Post)}'. Dadurch wird der letzte Aufruf als Ausdruck und nicht als Funktion behandelt. Wenn Sie etwas in einen Ausdruck pipen, wird das '.' wie erwartet ersetzt. Ich benutze diesen Trick oft, um eine Funktion aufzurufen, die nicht gut mit Rohrleitungen verbunden ist. –