Применение функции к вектору в R - PullRequest
1 голос
/ 23 марта 2020

Я довольно новичок в программировании на R, и мне интересно, почему это не работает:

w <- c(1,0)
deriv(~x^2+y,c("x","y"),function.arg = TRUE)(w)

Я действительно хочу применить функцию, созданную производным () к переменной w. Может быть, какая-то предыстория о том, как бороться с этими «макросами», может быть полезной ...

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Мы можем использовать do.call и передать 'w' в качестве list аргументов

do.call(deriv(~x^2+y,c("x","y"),function.arg = TRUE), as.list(w))
0 голосов
/ 23 марта 2020

Ваша функция предоставляет два параметра не по умолчанию, но вы передаете только один аргумент. Ниже будет работать, если это ваше намерение:

w <- c(1,0)

deriv( ~ x^2 + y, c("x","y"), function.arg = TRUE)(w, w)
# [1] 2 0
# attr(,"gradient")
#      x y
# [1,] 2 1
# [2,] 0 1

В качестве альтернативы, установите параметр по умолчанию:

w <- c(1,0)

deriv( ~ x^2 + y, c("x","y"), function.arg = function(x, y=2){})(x=w)

# [1] 3 2
# attr(,"gradient")
#      x y
# [1,] 2 1
# [2,] 0 1

# MORE READABLE VERSION WITH identity()
myfunc <- deriv( ~x^2 + y, c("x","y"), func = function(x, y=2) identity(x,y))
myfunc(x=w)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...