Передать только некоторые аргументы функции как именованный список в R - PullRequest
1 голос
/ 04 апреля 2020

Учитывая функцию

 power <- function(x,a,b) b*x^a

Я знаю, что вместо вызова ее с помощью power(c(1:10),2,1.5), я могу вызвать ее с помощью do.call, используя именованный список, с

 parms=list(x=c(1:10),a=2,b=1.5)
 do.call("power",parms)

Однако представьте, что у меня есть разные векторы x для обработки с одинаковыми значениями a и b. Пока я что-то не пропустил, кажется, я не могу определить частичный список parms=list(a=2,b=1.5), а затем повторно использовать этот список с другими значениями x, что-то вроде

 power(c(1:10),parms)

или

 do.call("power",c(1:10),parms) 

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Мы можем использовать pmap

library(purrr)
pmap(parms, power)
0 голосов
/ 04 апреля 2020

Как насчет создания параметров, которые не изменяются в качестве аргументов функции по умолчанию.

power <- function(x,a = 2,b = 1.5) b*x^a

lapply(list(1:10, 11:20), power)

#[[1]]
# [1]   1.5   6.0  13.5  24.0  37.5  54.0  73.5  96.0 121.5 150.0

#[[2]]
# [1] 181.5 216.0 253.5 294.0 337.5 384.0 433.5 486.0 541.5 600.0
...