कुछ भूखंडों का उत्पादन करने के लिए अपेक्षाकृत सरल रैपर लिखने की कोशिश कर रहे हैं, लेकिन ...
के रूप में निर्दिष्ट समूहिंग चर के साफ-अलग मूल्यांकन को निर्दिष्ट करने के तरीके को कैसे काम नहीं कर सकते हैं, उदाहरण के फ़ंक्शन जो फ़ेसिएबल वैरिएबल हैं लेकिन समूह द्वारा अंतर नहीं करते हैं। ..साफ-सफाई मूल्यांकन प्रोग्रामिंग और ggplot2
my_plot <- function(df = starwars,
select = c(height, mass),
...){
results <- list()
## Tidyeval arguments
quo_select <- enquo(select)
quo_group <- quos(...)
## Filter, reshape and plot
results$df <- df %>%
dplyr::filter(!is.na(!!!quo_group)) %>%
dplyr::select(!!quo_select, !!!quo_group) %>%
gather(key = variable, value = value, !!!quo_select) %>%
## Specify what to plot
ggplot(aes(value)) +
geom_histogram(stat = 'count') +
facet_wrap(~variable, scales = 'free', strip.position = 'bottom')
return(results)
}
## Plot height and mass as facets but colour histograms by hair_color
my_plot(df = starwars, select = c(height, mass), hair_color)
ग्रेट यह काम करता है, लेकिन कैसे अलग hair_color
के बीच अंतर करना? आम तौर पर यह aes()
के भीतर किया जाता है, लेकिन aes_()
का उपयोग किया बजाय
my_plot <- function(df = starwars,
select = c(height, mass),
...){
results <- list()
## Tidyeval arguments
quo_select <- enquo(select)
quo_group <- quos(...)
## Filter, reshape and plot
results$df <- df %>%
dplyr::filter(!is.na(!!!quo_group)) %>%
dplyr::select(!!quo_select, !!!quo_group) %>%
gather(key = variable, value = value, !!!quo_select) %>%
## Specify what to plot, including colouring by the supplied ... groupings
ggplot(aes_(~value, colour = !!!quo_group)) +
geom_histogram(stat = 'count') +
facet_wrap(~variable, scales = 'free', strip.position = 'bottom')
return(results)
}
## Plot height and mass as facets but colour histograms by hair_color
my_plot(df = starwars, select = c(height, mass), hair_color)
Error in !quo_group : invalid argument type
मैं देख रहा हूँ या बाहर काम नहीं कर सकता इस के बाद से quos()
(यानी quo_group
) के परिणामों मैं (मुझे लगता है कि) चाहिए उपयोग कर रहा है अब Programming with dplyr कई बार पढ़ा रही जहां मैं गलत जा रहा हूँ।
क्या कोई मेरी त्रुटि को इंगित कर सकता है/मुझे रास्ता दिखा सकता है?
आपके दूसरे फ़ंक्शन में, आपके पास 'ggplot (aes (आदि)) के साथ दो पंक्तियां क्यों हैं? – FlorianGD
यदि आप 'quos (...) 'के बजाय' quo (...) 'का उपयोग करते हैं, तो चीजें' aes_' a la' aes_ (~ value, color = quo_group) 'में ठीक काम करती हैं। लेकिन हो सकता है कि आपको कुछ और के लिए समूहीकरण चर की सूची चाहिए? – aosmith
ओह, मैं देखता हूं, 'quos' एक सूची देता है। इसलिए यदि आप केवल 'तत्व (...)' से प्राप्त 1 तत्व सूची के पहले तत्व का उपयोग करना चाहते हैं, तो आपको 'aes_' में 'color = quo_group [[1]]' की आवश्यकता होगी। – aosmith