为什么要把函数放在r的函数参数中?
假设我有这个函数为什么要把函数放在r的函数参数中?,r,function,arguments,R,Function,Arguments,假设我有这个函数 library(dplyr) x<-c(1,2,3,4,5) my_function <- function(){ results <- x %>% sum()%>% sqrt() return(results) } my_function() [1] 3.872983 库(dplyr) x使用函数名传递函数,如下所示: my_function <- function(x, fun1, fun2) {
library(dplyr)
x<-c(1,2,3,4,5)
my_function <- function(){
results <- x %>%
sum()%>%
sqrt()
return(results)
}
my_function()
[1] 3.872983
库(dplyr)
x使用函数名传递函数,如下所示:
my_function <- function(x, fun1, fun2) {
x %>%
fun1 %>%
fun2
}
my_function(1:5, sum, sqrt)
## [1] 3.872983
my_函数%
fun1%>%
fun2
}
my_函数(1:5,求和,sqrt)
## [1] 3.872983
通常是这样做的,允许传递函数或用字符串命名函数
my_function <- function(x, fun1, fun2) {
fun1 <- match.fun(fun1)
fun2 <- match.fun(fun2)
x %>%
fun1 %>%
fun2
}
my_function(1:5, sum, sqrt)
## [1] 3.872983
my_function(1:5, "sum", "sqrt")
## [1] 3.872983
my_函数您可以将其作为承诺传递给函数,然后通过调用参数名对其进行求值。您的第二个函数工作得非常好。问题在哪里?哇!我没想到第二个函数会起作用谢谢大家。我知道这是可行的,你最近(我知道我过去有过)遇到过问题吗?管道需要函数参数(()
)才能起作用?谢谢你们的工作,还有一个问题,如果x有NA my_函数(c(1:3,NA),sum(NA.rm=t),会发生什么,sqrt)此代码无效。您必须传递函数,而不是表达式。定义sum\u na
my_function <- function(x, fun1, fun2) {
fun1 <- match.fun(fun1)
fun2 <- match.fun(fun2)
x %>%
fun1 %>%
fun2
}
my_function(1:5, sum, sqrt)
## [1] 3.872983
my_function(1:5, "sum", "sqrt")
## [1] 3.872983