W dplyr, chcę, aby wykluczyć kolumny, które zawierają słowo „śmieci” , ale nie mogą być dowolne kolumny, które zawierają słowo „śmieci”. W takim przypadku dplyr powinien zwrócić wszystkie kolumny. Ale nie zwraca żadnego. Zobacz przykładowy test jednostki poniżej.w dplyr wybrać ze spadkiem nie działa
df<-data.frame(name=paste("name",1:5), age=1:5)
str(df)
# 'data.frame': 5 obs. of 2 variables:
# $ name: Factor w/ 5 levels "name 1","name 2",..: 1 2 3 4 5
# $ age : int 1 2 3 4 5
df1<-df%>%select(-contains("junk"))
str(df1)
# 'data.frame': 5 obs. of 0 variables
Gdzie się mylę?
Zauważ, że to działa prawidłowo, jeżeli co najmniej jedna kolumna miała ten warunek> df <-data.frame (name = paste ("nazwa", 1: 5), agejunk = 1: 5) > DF1 <-df%>% wybrać (-contains ("śmieci")) > Str (DF1) 'data.frame': \t 5 obs. 1 zmienną: $ name : współczynnik W/5 poziomów "Nazwa 1", "2 Nazwa" ..: 1 2 3 4 5 – guna
Myślałem coś takiego 'df%>% Wybrać (ifelse (suma (Grepl (” śmieci”, nazwy (DF)))> 0, -contains ("śmieci"), wszystko()))' będzie działać, ale 'wszystko()' nie wydaje się, aby wrócić wszystko ... – tospig
oraz podobna historia z 'df%>% select (-matches ("junk * *"))' – tospig