gpt4 book ai didi

r - sapply( ) 和未使用的函数参数

转载 作者:行者123 更新时间:2023-12-05 04:08:18 27 4
gpt4 key购买 nike

我是 R 的新手,正在尝试解决其中一个家庭作业问题。我正在练习使用的一组函数是 apply() 系列。具体来说,这道题要求使用 sapply() 函数来计算向量的均值。

稍微设置一下背景。首先,这是我的 prop_peer_pressure 函数:

编写一个函数 prop peer pressure,它接受医生的索引号和一个月,并返回该月已经开四环素处方的医生联系人的比例。如果医生没有联系人,您的函数应返回 NaN。检查医生 37,第 5 个月返回 0.6 的比例。

prop_peer_pressure <- function(index, month) {
if (doc.contacts[index] == 0) {
return(NaN)
}
else {
return(count_peer_pressure(index, month) / doc.contacts[index])
}
}


prop_peer_pressure(37, 5)
# 37
# 0.6

adopters() 是我编写的另一个函数,它返回在 x 月开始开处方的医生的索引。

adopters(2)
# [1] 10 13 20 56 71 75 76 87 107


sapply(adopters(2), prop_peer_pressure, 2)
# 10 13 20 94 128 132 133 168 200
# 0.0000 0.3333 0.1428 0.0909 0.3333 0.4000 0.3333 0.1666 0.3333

这行得通,但我想知道 R 如何知道它需要将哪个“索引”号输入“prop_peer_pressure”函数?由于我的 prop_peer_pressure 函数接受 2 个参数(索引、月份)……

sapply(adopters(2), prop_peer_pressure, index = adopters(2), month = 2)

Error in FUN(X[[i]], ...) : unused argument (X[[i]])

最佳答案

如何应用

关于 sapply 的工作原理,这三个都给出相同的结果:

f <- function(x, y) x + y

sapply(1:5, f, 10)
## [1] 11 12 13 14 15

sapply(1:5, function(x) f(x, 10))
## [1] 11 12 13 14 15

c(f(1, 10), f(2, 10), ..., f(5, 10))
## [1] 11 12 13 14 15

在每种情况下,f 对 1:5 的每个元素运行一次,使用该元素作为 f 的第一个参数,并使用 10 作为 f 的第二个参数。

有问题的最后一个应用程序出错

问题中的最后一个 sapply 给出了一个错误,因为它试图将三个参数传递给函数,但函数只接受两个参数。 prop_peer_pressure 的第一个参数来自 sapply 的第一个参数的连续组件,prop_peer_pressure 的其余两个参数是 index= 和 month=,它们是在调用 sapply 的末尾指定的。那就是它试图运行这个:

c(prop_peer_pressure(10, index = adopters(2), month = 2), 
prop_peer_pressure(13, index = adopters(2), month = 2),
... etc ...)

这显然不是本意。

关于r - sapply( ) 和未使用的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47744987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com