首页 > 解决方案 > 如何在 lapply (R) 中显式定义附加参数

问题描述

我有一个带有两个参数的函数,如下所示:

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 上运行会很复杂。如果函数包含...则更加复杂

标签: rloopslapply

解决方案


您可以使用Map()from base 执行此操作(类似于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

推荐阅读