查找R

时间:2015-10-13 23:24:24

标签: r duplicates matching

我目前正在处理家庭作业问题,并遇到了一个问题。我正在处理的问题是经典生日问题的修改版本。然而,我现在也试图弄清楚两个人生日相同的可能性,更具体地说是其他人和我一样生日的概率。

以下是作业现有生日问题的工作功能。

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日是我的生日。

以下是我对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匹配。

任何帮助都会非常感激,希望这些信息足以理解我想要达到的目标。

1 个答案:

答案 0 :(得分:2)

你的功能有点奇怪:你按x=1进行子集化,总是为1。

尝试类似:

duplicate.birthdays <- function(n) {
    which(birthdays(n)==1)
}