跳过R循环中的迭代

时间:2018-12-16 14:49:06

标签: r for-loop if-statement

有人要求

编写一个游戏,该游戏每次将seq(1:31)的数字除以7或包含7便会打印“繁荣”。到目前为止一切顺利:

num_turns=c(1:31)
for(i in seq(1,31)){
  if(i%%7==0 || "7" %in% i){
    print("boom")
  }else{
    print(i)
  }
}

然后,im要求以seq(1:55)重复游戏,但条件是:有4个玩家,IM玩家#3,并且只打印我的回合。 这些是我被要求创建的变量:

total_players=4
player_num=3
turns=55

有人建议如何编码吗?

2 个答案:

答案 0 :(得分:0)

num_turns=c(1:55)
for(i in seq(1,55)){
  if(i %% 4 == 3 &(i%%7==0 || "7" %in% i)){
    print("boom")
  }else{
     print(i)
  }
 }

答案 1 :(得分:0)

这将解决问题的第一部分:

for (i in 1:31) {
  if (i %% 7==0 || grepl("7", i)) {
    print("boom")
  } else {
    print(i)
  }
}

这是矢量化版本:

i <- 1:31
ifelse(i %% 7==0 | grepl("7", i), "boom", i)

对于问题的第二部分:

total_players <- 4
player_num <- 3
turns <- 55
i <- 1:turns
allT <- ifelse(i %% 7==0 | grepl("7", i), "boom", i)
myT <- allT[seq(player_num, turns, total_players)]