Моя функция foo
предназначена для вычисления переменной с именем d
с использованием одного из ее аргументов: s
, t
или f
.
Например, если пользователь используетfoo(n = 30:35, s = 1:2, t = 3:5, f = 7)
Я хочу, чтобы foo
сначала вычислил d
, используя t
, затем f
, а затем s
.Таким образом, в выводе я ожидаю 6 d
с (то есть 2 от t
, 1 от f
и 2 от s
).
Я хочу, чтобы первые 2 n
были для t
, следующие n
были для f
, а оставшиеся n
были для s
.Есть ли способ, которым я могу управлять n
с внутри функции таким образом?
foo <- function(n, s = NULL, t = NULL, f = NULL){
d1 <- if(!is.null(t)) t + n else NULL
d2 <- if(!is.null(f)) f^2 + n else NULL
m <- if(!is.null(s)) s/2 + n else NULL
r <- if(!is.null(m)) m + 1 else NULL
d3 <- if(!is.null(m)) m + r else NULL
data.frame(d = c(d1, d2, d3))
}
# Example of use:
foo(n = 30:35, s = 1:2, t = 3:5, f = 7)