【问题标题】:How to create a for loop in R? [duplicate]如何在 R 中创建一个 for 循环? [复制]
【发布时间】:2010-11-12 18:43:26
【问题描述】:

可能的重复:
how to start a for loop in R programming
Creating a for loop in R

你好 这是场景

快速约会:您确信自己有 15% 的机会与任何给定的人约会 当地快速约会活动的候选人。在活动中,您将遇到正好 8 位候选人。在您与候选人交谈 5 分钟后,他/她会立即表明她是否想与您约会。

问题是……

通过模拟,找出你遇到的第三个候选人是第一个 给你一个约会。

我正在寻找可以回答这个问题的 R 代码(我认为这是一个 for 循环)

【问题讨论】:

标签: r


【解决方案1】:

这是一个 for 循环示例:

for (i in 1:1e7) {
  cat("I LOVE HOMEWORK!!  ")
}

【讨论】:

  • @Dirk 编辑别人深思熟虑的答案是不好的行为。
  • 这就是为什么我使用 cat 而不是 paste();我喜欢滚动效果。它让我想起了我的第一个基本程序!
  • JD- 你能重新发布你的答案,因为 Dirk 搞砸了它
  • @Joe - 他并没有以任何实质性的方式搞砸它。无论如何,点击Dirk头顶“已编辑”旁边的文字,您将看到JD's Answer的修订历史
  • 所以这冻结了 R 程序,因为 1e7 真的很大。有趣的是,直到我撞毁 R 后我才意识到这一点。打得很好,先生
【解决方案2】:

这不是一个循环,但它更以 R 为中心:

N <- 1000 ## number of simulations to run
## Make this reproducible by seeding the random number generator
set.seed(1)
## read ?sample to see how this works
## Basically, sampling accept/not accept with 0.15/0.85 probability,
## N (1000) times for each of three Girls
df <- data.frame(Girl1 = sample(c(TRUE,FALSE), N, replace = TRUE,
                 prob = c(0.15,0.85)),
                 Girl2 = sample(c(TRUE,FALSE), N, replace = TRUE,
                 prob = c(0.15,0.85)),
                 Girl3 = sample(c(TRUE,FALSE), N, replace = TRUE,
                 prob = c(0.15,0.85)))
## Show some of the data
head(df)
## the row sums tell us how many accepts you'd get, 1, 2, or 3
outcomes <- rowSums(df)
## We want the rows with 1 acceptance **and** where Girl3 == TRUE
wanted <- with(df, which(outcomes == 1L & Girl3))
## This gives us the simulation probability
length(wanted) / N

抱歉,这不是一个循环 - 但您可以尝试使用上述指导在循环中执行此操作。不能让我们做所有的工作。

【讨论】:

  • 在您的代码中,
  • @Joe In R、=&lt;- 是等效的赋值运算符,但在风格上更喜欢 &lt;-
  • @Joe - 只是为了补充Shane的评论,一般=&lt;-可以互换使用,但有些情况下你不能使用=,你可以使用@ 987654328@。一个例子是with(df, new &lt;- Girl1),当with(df, new = Girl1) 失败时。
  • 我能再问一个问题吗...在这行代码中...“想要
  • 是的,乔,你可以问。是否有人回答将取决于几件事,例如您是否接受为您的问题提供的答案之一,因为它可以帮助人们获得代表并更积极地参与网站。当我们获得足够的代表时,我们可以编辑 Qs、更改标签等,以使整个 StackOverflow 成为更好的资源。
猜你喜欢
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多