要替换的项目数不是替换长度错误的倍数?

number of items to replace is not a multiple of replacement length error?

设置如下:假设一副标准洗牌的 52 张牌。仅使用 Monte Carlo 方法计算一副牌中前两张牌是 A 的近似概率。在开始实施时,将种子设置为 514。您应该模拟至少 10 万次实验以获得足够近似的答案。

这是我返回错误的代码:

cards <- c(1:52)

nTrials<-100000
results <-rep(NA, nTrials)#creating empty vector with 100000 NAs

for(i in 1:nTrials){
  sampled <- sample(x=cards, size=2, replace=TRUE)
  results[i]<-sampled
}
results

您在 for 循环的每次迭代中对两张卡片进行采样。所以你会在末尾有 2 *nTrials 张卡片,这是分配的 results 大小的两倍。而是将卡片存储在列表中。

假设牌号 1、14、27 和 40 是 A。您可以使用 %in% 检查采样的卡片是否是 A,如果是,则增加计数器。

cards <- c(1:52)
aces <- c(1, 14, 27, 40)
nTrials<-100000
results <- vector('list', nTrials)
counter <- 0

for(i in 1:nTrials){
  sampled <- sample(x=cards, size=2, replace=TRUE)
  results[[i]] <- sampled
  if(all(sampled %in% aces)) counter <- counter + 1
}
#Number of times two aces were enountered
counter 
#Probability
counter/nTrials