Как явно определить дополнительные аргументы в lapply (R) - PullRequest
0 голосов
/ 28 октября 2019

У меня есть функция с двумя аргументами, как показано ниже:

MyFun = function(y, z){0.5*y + 10*z}

Я хочу, чтобы z было зафиксировано на 10, а y - на одном из следующих 1:10. Используя lapply, я написал:

lapply(X = 1:10, FUN = MyFun,  z=10)

Это делает работу, но кажется, что R понимает, что y - это X, потому что это недостающий аргумент MyFun. Мой вопрос заключается в том, как я могу определить y явно в дополнительных аргументах. Я хотел бы напечатать что-то вроде:

lapply(X = 1:10, FUN = MyFun, y=X, z=10)

, что, очевидно, не будет работать, так как R будет искать X в общей среде. Проблема с неявным определением y заключается в том, что, когда у меня есть функция, скажем, с 10 фиксированными аргументами и одним аргументом, принимающим значение X, будет сложно (для внешнего читателя) определить, какой аргумент работает на X. еще сложнее, если функция содержит ...

1 Ответ

2 голосов
/ 28 октября 2019

Вы можете сделать это с Map() из базы (аналогично lapply())

Map(MyFun, y=1:10, z=10)

или mapply() также из базы, если вы хотите получить вектор взамен (аналогично sapply())

mapply(MyFun, y=1:10, z=10)
#  [1] 100.5 101.0 101.5 102.0 102.5 103.0 103.5 104.0 104.5 105.0
...