Piszę swoją funkcję i chcę użyć funkcji filter() dplyr, aby wybrać wiersze z mojej ramki danych, które spełniają warunek. To jest mój kod:Używanie filtra dplyr() w programowaniu
library(tidyverse)
df <-data.frame(x = sample(1:100, 50), y = rnorm(50), z = sample(1:100,50), w = sample(1:100, 50),
p = sample(1:100,50))
new <- function(ang,brad,drau){
df%>%filter(!!drau %in% 1:50)%>%select(ang,brad) -> A
return(A)
}
brand <- c("z","w","p")
lapply(1:3, function(i) new(ang = "x", brad = "y", drau = brand[i]))%>%bind_rows()
Anytime uruchomić tę funkcję, to wygląda filter
nie wybrano żadnych wierszy, które spełniają warunek.
Jak mogę to ułatwić?
Aktualizacja
Z jakiegoś powodu, to działa, gdy nie używam `% w%, podobnie jak w;
new <- function(ang,brad,drau){
df%>%filter(!!drau > 50)%>%select(ang,brad) -> A
return(A)
}
lapply(1:3, function(i) new(ang = "x", brad = "y", drau = brand[i]))%>%bind_rows()
Wyniki są jednak takie same dla każdej pętli. Dlaczego tak jest? i dlaczego nie mogę używać %in%
.
Wystarczy popatrzeć na 'filter_' – HubertL
@HubertL, Yh wiem, że i również filter_ jest uzyskiwanie wycofywane – Kay
gdzie ty czytasz? – HubertL