要替换的项目数不是替换长度错误的倍数?
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
设置如下:假设一副标准洗牌的 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