【问题标题】:Subtract one list from another从另一个列表中减去一个列表
【发布时间】:2018-05-06 13:37:55
【问题描述】:

我正在尝试“模拟”扑克游戏。首先,我创建了一个包含 52 张卡片的牌组作为数据框。因此我使用了三列:Cardvalue、Cardcolor 和 Rank (1-52)。

现在两个玩家每五张牌抽 - 拥有最高牌(等级)的玩家赢得游戏。所以我写了一个叫做“扑克”的函数,定义了两个玩家,每个玩家从牌堆中抽 5 张牌。

问题是,如果玩家 1 已经拿到了 7 颗钻石,玩家 2 也可以抽到。我的想法是从牌组中减去玩家一的结果,以便只能抽取剩余的牌 - 但每次我遇到错误时,类型列表都是无效的。我希望你能帮助我!非常感谢!

poker <- function() {deckmat3 player1 <- deckmat3[sample(nrow(deckmat3),5),] player2 <- deckmat3[sample(nrow(deckmat3),5),] return(ifelse(max(player1$rank) > max(player2$rank),"player1","player2"))}

我的想法是:

poker <- function() {poker <- function() {deckmat3 player1 <- deckmat3[sample(nrow(deckmat3),5),] player2 <- deckmat3[deckmat3$player1][sample(nrow(deckmat3),5),] return(ifelse(max(player1$rank) > max(player2$rank),"player1","player2"))} 

但它不起作用:/

编辑:

希望,我可以提供有用的数据:

  1. cardvalues cv的向量:

    cv

  2. 数据框deckmat3:

    deckmat3

然后我将数据添加到我上面提到的函数“扑克”中。玩家 1 和玩家 2 的结果是来自原始数据框“deckmat3”的两个子列表,有 5 行。问题是,玩家 2 可以抽出玩家 1 已经抽过的牌。这意味着必须从“deckmat3”中减去子列表“玩家 1”……这就是问题所在。我无法从列表中删除列表:(

【问题讨论】:

  • 欢迎来到 SO。请提供reproducible example 和预期输出。这不是虚张声势;)
  • 请注意,可以像这样更简单地创建 cv:cv &lt;- rep(2:14, each=4L)

标签: r


【解决方案1】:

我会尝试不同的方式。您只需要修复 cardRank 列(不确定您要如何确定)。

cardValue <- rep(1:13, 4)
cardSuit <-
c(rep("diamond", 13),
  rep("heart", 13),
  rep("spade", 13),
  rep("club", 13))

cardColor <- c(rep("red", 26), rep("black", 26))

cardRank <- 1:52


winnerList <- c()

simulateGames <- function(iterations) {
for (it in 1:iterations) {
    cards <- data.frame(cardValue, cardSuit, cardColor, cardRank)

    player1Cards <- cards[sample(nrow(cards), 5),]

    cards <-
        cards[!rownames(cards) %in% rownames(player1Cards),]

    player2Cards <- cards[sample(nrow(cards), 5),]

    winnerList <-
        c(winnerList, ifelse(
            max(player1Cards$cardRank) > max(player2Cards$cardRank),
            1,
            2
        ))

}
winnerList
}

simulateGames(1000)

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多