在R中查找特定值的索引
我目前正在做作业,遇到了一个问题。我正在研究的问题是经典生日问题的修改版本。然而,我现在也在尝试,不仅仅是计算两个人生日相同的概率,更具体地说,是其他人和我的生日完全相同的概率 以下是作业现有生日问题的工作函数在R中查找特定值的索引,r,duplicates,matching,R,Duplicates,Matching,我目前正在做作业,遇到了一个问题。我正在研究的问题是经典生日问题的修改版本。然而,我现在也在尝试,不仅仅是计算两个人生日相同的概率,更具体地说,是其他人和我的生日完全相同的概率 以下是作业现有生日问题的工作函数 birthdays = function(n) { s = sample(1:365, n, replace = TRUE) return(s) } duplicate.birthdays = function(n) { b = birthdays(n) dups = anyDup
birthdays = function(n) {
s = sample(1:365, n, replace = TRUE)
return(s)
}
duplicate.birthdays = function(n) {
b = birthdays(n)
dups = anyDuplicated(b)
dups = any(dups>0)
return(dups)
}
prob.duplicate =function(n) {
r = replicate(5000, duplicate.birthdays(n))
prob = sum(r) / length(r)
return(prob)
}
n = 1:100 # number of people I'm sampling from
probs = sapply(n, prob.duplicate)
我试图修改这些函数,以便专门针对与我生日相同的人。我假设在1-365天中,我会寻找数字1再次出现的任何时间,因为我假设1,或者1月1日是我的生日
下面是我修改过的duplicate.birthdays函数
duplicate.birthdays = function(n) {
b = birthdays(n)
index = 1:length(b)
x = 1
index.get.1 = index [x=1]
return(index.get.1)
}
但是,我总是返回第一个索引,而不是索引是否与值1匹配
任何帮助都将不胜感激,希望这是足够的信息来理解我的意图。您的函数有点奇怪:您正在通过
x=1
进行子集设置,该值始终为1
尝试以下方法:
duplicate.birthdays <- function(n) {
which(birthdays(n)==1)
}
duplicate.birthdays尝试此更改后,我将返回一个变量prob列表,基本上读取int(0)int(0)int 12。这是否提供了与1匹配的索引?不完全确定这是返回的确切内容,但感谢您的帮助!是的,它给出匹配的位置,如果没有匹配,则给出整数(0)
。更用户友好的版本可能是:replicate.birthdays非常感谢!这使我走上了正确的道路。