library(dplyr)
Toy-Datensatz mit:Filter Datenrahmen globalen Variable mit dem gleichen Namen wie Spaltenname
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6))
df
x y
1 1 4
2 2 5
3 3 6
Dies funktioniert:
df %>% filter(y == 5)
x y
1 2 5
Dies funktioniert auch:
z <- 5
df %>% filter(y == z)
x y
1 2 5
Aber das schlägt fehl
y <- 5
df %>% filter(y == y)
x y
1 1 4
2 2 5
3 3 6
Offenbar dplyr kann nicht den Unterschied zwischen seiner Säule machen y
und der globalen Variable y
. Gibt es eine Möglichkeit, dplyr zu sagen, dass das zweite y die globale Variable ist?
> filter(df, y==.GlobalEnv$y)
x y
1 2 5
Interessanterweise mit der Accessorfunktion globalenv()
als Ersatz für .GlobalEnv
funktioniert nicht in diesem Szenario:
könnte man df%>% filter (y == get ('y')) –
interessante Frage, aber es erinnert mich an den alten "Doktor, tut es weh, wenn ich das tue." "Nun, du könntest versuchen, das nicht zu tun." witz ... –