R 两个循环并以简单的分发格式呈现答案

R 两个循环并以简单的分发格式呈现答案,r,R,有10个家庭。当他们生下一个男孩时,他们就停止了。当他们有了一个女孩,他们将继续生产。男孩和女孩的比例是多少?我能做这部分。代码如下所示 N <- 10 boys <- 0 girls <- 0 while (N>=1) { boyorgirl <- sample (c("boy", "girl"), N, replace = TRUE) boys <- boys + length(which(boyorgirl=="boy")) girls

有10个家庭。当他们生下一个男孩时,他们就停止了。当他们有了一个女孩,他们将继续生产。男孩和女孩的比例是多少?我能做这部分。代码如下所示

N <- 10
boys <- 0
girls <- 0
while (N>=1) {
  boyorgirl <- sample (c("boy", "girl"), N, replace = TRUE)   
  boys <- boys + length(which(boyorgirl=="boy"))
  girls <- girls + length(which(boyorgirl=="girl"))
  N <- length(which(boyorgirl=="girl"))
}
ratioboygirl <- boys / girls

N由于您将
男孩
女孩
ratioboygirl
初始化为
列表
,因此您需要使用双括号
[[[]]
传递单个数字,而不是使用单括号
[]
传递列表。您可以使用一个简单的示例来验证这一点


a由于您将
男孩
女孩
ratioboygirl
初始化为
列表
,因此您需要使用双括号
[[]]
传递单个数字,而不是使用单括号
[]
传递列表。您可以使用一个简单的示例来验证这一点


a我将使用直方图函数根据我自己的问题完成输出。谢谢deepseefan的建议。我将使用直方图函数根据我自己的问题最终确定输出。谢谢你的建议。
boys <- list()
girls <- list()
ratioboygirl <- list()

for (ii in 1:1000) {
  boys[ii] <- 0
  girls[ii] <- 0
  N <- 10
  while (N>=1) {
    boyorgirl <- sample (c("boy", "girl"), N, replace = TRUE)   
    boys[ii] <- boys[ii] + length(which(boyorgirl=="boy"))
    girls[ii] <- girls[ii] + length(which(boyorgirl=="girl"))
    N <- length(which(boyorgirl=="girl"))
  }
  ratioboygirl[ii] <- boys [ii] / girls [ii]
}