如何使用向量作为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谢谢,这非常有效