जैसा कि हम जानते हैं, पर्यावरण में उन्हें निर्दिष्ट किए बिना आर में कार्यों को कॉल करना संभव है, उदा।mutate_each (और summarise_each) के लिए अनाम फ़ंक्शंस का उपयोग कैसे करें?
> (function(x){x/2})(5)
[1] 2.5
मैं, मक्खी पर इस तरह के कार्यों का उपयोग करने के लिए, एक mutate_each
(या summarise_each
) कॉल में करना चाहते हैं। उदाहरण के लिए,
df <- data.frame(a = runif(10), b = rnorm(10))
साथ मैं निम्न में से एक करने के लिए प्रयास कर सकते हैं, लेकिन वे सभी वापसी त्रुटियों:
library(dplyr)
> df %>%
+ mutate_each(funs((function(x){x/2})), a, b)
Error in eval(substitute(expr), envir, enclos) :
Unsupported type CLOSXP for column "a"
>
> df %>%
+ mutate_each(list((function(x){x/2})), a, b)
Error: is.fun_list(calls) is not TRUE
>
>
> df %>%
+ mutate_each(funs((function(x){x/2})(.)), a, b)
Error in vapply(dots[missing_names], function(x) make_name(x$expr), character(1)) :
values must be length 1,
but FUN(X[[1]]) result is length 2
>
हालांकि, अगर मैं कार्यस्थान में समारोह दें और इसके बाद सभी काम करता है अपेक्षा के अनुरूप:
tmp_fn <- function(x){x/2}
और
> df %>%
+ mutate_each(funs(tmp_fn), a, b)
a b
1 0.360048105 -0.452285314
2 0.020175136 0.253063103
3 0.002351454 -0.148997643
4 0.262808493 -0.599555244
5 0.057246370 0.007567076
6 0.400027700 0.264901865
7 0.120505411 -0.346171709
8 0.266166200 0.116066231
9 0.031302148 -0.129739601
10 0.250212897 0.230194217
क्या कॉल में mutate_each
या summarise_each
पर कॉल को गतिशील रूप से परिभाषित करने का कोई तरीका है?
उन 'अनाम प्रक्रियाएं' कहा जाता है के साथ समारोह कॉल लपेट कर सकते हैं; यह निहित है कि उन्हें गतिशील रूप से घोषित किया जाना चाहिए। – smci