【发布时间】:2018-05-24 12:10:42
【问题描述】:
我是 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)
FUN(X[[i]], ...) 中的错误:未使用的参数 (X[[i]])
【问题讨论】:
-
任何未命名的参数都将恢复为默认值。也就是说,您对这个问题采取了错误的方法——从
data.table中查看by或从dplyr中查看group_by以获得更典型的处理分组操作的方法