从另一个列表中减去一个列表

时间:2018-05-06 13:37:55

标签: r

我试图模拟'扑克游戏。首先,我创建了一个带有52张卡作为数据帧的卡座。因此我使用了三列:Cardvalue,Cardcolor和Rank(1-52)。

现在有两名玩家每五张牌抽出一张牌 - 而牌数最高的牌手(等级)将赢得比赛。所以我写了一个名为'扑克'并且定义了两个玩家,每个玩家从牌组中抽取5张牌。

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

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&lt; -rep(2,4),rep(3,4),rep(4,4),rep(5,4),rep(6,4),rep(7,4),rep (8,4),代表(9,4),代表(10,4),代表(11,4),代表(12,4),代表(13,4),代表(14,4))

  2. Dataframe deckmat3:

    deckmat3&lt; - data.frame(cardvalue = c(cv),cardcolor = c(&#34; Diamond&#34;,&#34; Club&#34;,&#34; Heart&#34;,& #34;铲&#34),秩= 1:52)

  3. 然后我将数据添加到功能&#39;扑克&#39;我上面提到过。玩家1和玩家2的结果是来自原始数据框架的两个子列表&#39; deckmat3&#39;有5行。问题是,玩家2可以抽取已经由玩家1绘制的牌。这意味着,子列表玩家1&#39;必须从&#39; deckmat3&#39;中删除......这就是问题所在。我无法从列表中删除列表:(

1 个答案:

答案 0 :(得分:0)

我尝试不同的方式。您只需要修复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)