Как передать вектор значений в функцию? - PullRequest
0 голосов
/ 25 апреля 2018

Я написал следующую функцию в 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 (скажем, х = 300), моя функция оценила бы без проблем; тем не менее, я хочу протестировать свою функцию при разных значениях X, не вызывая функцию каждый раз.

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

Приведенный выше код явно не возвращает вектор значений. Как я могу вернуть вектор значений в качестве вывода? Пожалуйста, дайте мне несколько советов. Я пробовал различные функции и делаю все безрезультатно. Благодаря.

1 Ответ

0 голосов
/ 25 апреля 2018

Если x является num vector

sapply(x, CV_concentration) 

Если x является столбцом в кадре данных df

sapply(df$x, CV_concentration) 
...