मैं निम्नलिखित डेटा सेट (नमूना) है:purrr का उपयोग कर एक साफ eval समारोह पर लूप कैसे करें?
train <- data.frame(ps_ind_06_bin = c(FALSE, FALSE, FALSE, TRUE, TRUE, FALSE),
ps_ind_07_bin = c(FALSE, TRUE, TRUE, FALSE, TRUE, TRUE),
ps_ind_08_bin = c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE),
ps_ind_09_log = c(1, 3, 4, 2, 3, 2))
मैं निम्नलिखित समारोह है कि एक group_by()
ऑपरेशन के लिए एक ggplot से पता चलता है:
get_charts1 <- function(mygroup){
quo_var <- enquo(mygroup)
train %>%
group_by(!!quo_var) %>%
count() %>%
ungroup() %>%
ggplot(aes_q(x = quo_var, y = quote(n), fill = quo_var)) +
geom_col() +
theme(legend.position = "none")
}
यह ठीक काम करता है जब मैं स्वयं एक स्तंभ नाम imput उदाहरण के लिए:
get_charts1(ps_ind_07_bin)
हालांकि, मैं कई स्तंभ, जो मैं एक सदिश पर डाल पर समारोह का उपयोग करना चाहते:
binarias <- train %>%
select(ends_with("bin")) %>%
colnames()
नक्शे का उपयोग करें और कुछ सुझाव लेने, मैं का उपयोग करने की कोशिश की:
listaplots <- map(quo(!!! syms(binarias)), get_charts1)
लेकिन यह मुझे निम्न त्रुटि देता है:
"Error: Can't splice at top-level"
किसी को भी मैं करने के लिए क्या करने की जरूरत पता है इसे काम करने के लिए मिलता है?
लू प्रतीकों का उपयोग करने की आवश्यकता है यह सीधा है केएस की तरह 'नक्शा (quos (ps_ind_06_bin, ps_ind_07_bin), get_charts1)' काम नहीं करता है इसलिए समस्या वास्तव में विस्तार के साथ नहीं है। 'नक्शा() 'की तरह लगता है सिर्फ पैरामीटर के मूल्यांकन को मजबूर कर रहा है। – MrFlick
मजबूर वस्तुओं (जबरदस्त quosures या प्रतीकों सहित) कैप्चरिंग अगले rlang संस्करण में बॉक्स से बाहर काम करेगा। यह unquoting के बराबर होगा। – lionel
[जब कोई मेरे प्रश्न का उत्तर देता है तो मुझे क्या करना चाहिए?] (Https://stackoverflow.com/help/someone-answers) – zx8754