首页 > 解决方案 > 如何将值向量传递给函数?

问题描述

我在 R 中编写了以下函数。函数的输出是变异系数(标准偏差/平均值)。

 CV_concentration <- function(x,cv.tol.raw,A,B,C,D){
 y_at_x <- (A-D)/(1+(x/C)^B)+D
 y_low <- y_at_x * (1-cv.tol.raw/sqrt(2))
 y_high <- y_at_x * (1+cv.tol.raw/sqrt(2))
 x_at_ylow <- C*((A-D)/(y_low-D)-1)^(1/B)
 x_at_yhigh <- C*((A-D)/(y_high-D)-1)^(1/B)
 x_range <- c(x_at_ylow, x_at_yhigh)
 cv_con <- sd(x_range)/mean(x_range)
 return(cv_con)
 }

如果我要为除 x 之外的所有参数赋予默认值,我的函数将如下所示。

 CV_concentration <- function(x,cv.tol.raw=0.1,A=100,B=5000,C=5000,D=350000)

如果我要评估 X 的单个值(例如 x=300),我的函数将毫无问题地评估;但是,我想在不同的 X 值下测试我的函数,而不必每次都调用该函数。

 x <- c(400,500)
 CV_concentration(x,cv.tol.raw,A,B,C,D)

上面的代码显然没有返回值向量。如何返回值向量作为输出?请给我一些指示。我尝试了各种应用功能,do.call all 无济于事。谢谢。

标签: rfunctionarguments

解决方案


如果x是一个num vector

sapply(x, CV_concentration) 

如果x是数据框中的一列df

sapply(df$x, CV_concentration) 

推荐阅读