如何使用向量作为r中具有多个参数的函数的参数

如何使用向量作为r中具有多个参数的函数的参数,r,function,dataframe,for-loop,iteration,R,Function,Dataframe,For Loop,Iteration,我有一个具有四个参数的函数,其中三个参数取自给定的数据帧。我希望能够在给定的数据帧中使用函数,使用数字向量作为第四个参数的参数。 我知道如何一次处理一个值,但我确信有一种直接的方法可以做到这一点,可以使用for循环 下面是一个示例,其中a和b是来自df数据帧的变量,c是df中的行数,d是1到3的整数向量: set.seed(42) a<-runif(100,1,100) b<-runif(100,1,100) df<-data.frame(a,b)

我有一个具有四个参数的函数,其中三个参数取自给定的数据帧。我希望能够在给定的数据帧中使用函数,使用数字向量作为第四个参数的参数。 我知道如何一次处理一个值,但我确信有一种直接的方法可以做到这一点,可以使用
for
循环

下面是一个示例,其中a和b是来自df数据帧的变量,c是df中的行数,d是1到3的整数向量:

set.seed(42)    
a<-runif(100,1,100)    
b<-runif(100,1,100)    
df<-data.frame(a,b)    

fun1 <- function (a, b, c, d) {    
z <- sum (( a - d ) * b / c )    
return(z)    
}    
我想做的是这样的事情(它应该同时返回所有三个值):


希望我是清楚的。提前感谢。

您可以在函数中使用
sapply()

fun1 <- function (a, b, c, d) {    
  sapply(d, function(x) { sum (( a - x ) * b / c ) })
} 

fun1(df$a, df$b, nrow(df), c(1:3)) 
# [1] 2696.223 2643.748 2591.273

fun1您可以在函数中使用
sapply()

fun1 <- function (a, b, c, d) {    
  sapply(d, function(x) { sum (( a - x ) * b / c ) })
} 

fun1(df$a, df$b, nrow(df), c(1:3)) 
# [1] 2696.223 2643.748 2591.273
fun1您可以使用purrr包中的“map”命令。您可以使用
install.packages(“purrr”)

它看起来像这样:

# load purr library
library(purrr)

# Map your function
map(c(1:3), function(x) {fun1(df$a, df$b, nrow(df), x)})
输出是一个列表:

> map(c(1:3), function(x) {fun1(df$a, df$b, nrow(df), x)})
[[1]]
[1] 2696.223

[[2]]
[1] 2643.748

[[3]]
[1] 2591.273
您可以使用purrr包中的“map”命令。您可以使用
install.packages(“purrr”)

它看起来像这样:

# load purr library
library(purrr)

# Map your function
map(c(1:3), function(x) {fun1(df$a, df$b, nrow(df), x)})
输出是一个列表:

> map(c(1:3), function(x) {fun1(df$a, df$b, nrow(df), x)})
[[1]]
[1] 2696.223

[[2]]
[1] 2643.748

[[3]]
[1] 2591.273

sapply(1:3,fun1,a=df$a,b=df$b,c=nrow(df))
@Gregor谢谢,这非常有效
sapply(1:3,fun1,a=df$a,b=df$b,c=nrow(df))
@Gregor谢谢,这非常有效