【发布时间】: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"))}
但它不起作用:/
编辑:
希望,我可以提供有用的数据:
-
cardvalues cv的向量:
cv
-
数据框deckmat3:
deckmat3
然后我将数据添加到我上面提到的函数“扑克”中。玩家 1 和玩家 2 的结果是来自原始数据框“deckmat3”的两个子列表,有 5 行。问题是,玩家 2 可以抽出玩家 1 已经抽过的牌。这意味着必须从“deckmat3”中减去子列表“玩家 1”……这就是问题所在。我无法从列表中删除列表:(
【问题讨论】:
-
欢迎来到 SO。请提供reproducible example 和预期输出。这不是虚张声势;)
-
请注意,可以像这样更简单地创建 cv:
cv <- rep(2:14, each=4L)。
标签: r