Tôi muốn chọn các cột bằng cách sử dụng các tên màu và các giá trị của chúng trong một chuỗi ống đơn mà không đề cập đến các đối tượng khác, chẳng hạn như NAMES <- names(d)
. Tôi có thể làm điều đó với select_if()
không?dplyr :: select_if có thể sử dụng tên và giá trị của chúng cùng một lúc?
Ví dụ:
Tôi có thể sử dụng tên màu để chọn cols.
(select(matches(...))
thông minh hơn chỉ xử lý các tên họ).
library(dplyr)
d <- iris %>% select(-Species) %>% tibble::as.tibble()
d %>% select_if(stringr::str_detect(names(.), "Petal"))
Và tôi có thể sử dụng các giá trị.
d %>% select_if(~ mean(.) > 5)
Nhưng cách sử dụng cả hai? (đặc biệt là OR)
Mã dưới đây là những gì tôi muốn (tất nhiên, không chạy).
d %>% select_if(stringr::str_detect(names(.), "Petal") | ~ mean(.) > 5)
Mọi trợ giúp sẽ được đánh giá cao.
Cám ơn câu trả lời của bạn! Tôi đã được strugging để lambda chức năng nhưng nó không phải là cần thiết. – cuttlefish44
@ cuttlefish44, chắc chắn rồi. Vấn đề của hàm là hàm trong '.predicate' được áp dụng cho các cột và bằng cách này chúng ta mất thông tin về tên. – mt1022
Tùy chọn khác là 'd%>% chọn (kết quả (" Cánh hoa "), tên (mà (bản đồ (., Trung bình)> 5)))' – akrun