改变掷骰子的值
所以假设我掷了 5 个骰子。
模拟卷的代码是
Rolls<-sample(1:6, 5, replace=TRUE)
那就是如果我想将我的卷存储在 object 下Rolls。
现在让我们说出于某种原因我不希望有超过 2 个 6。这意味着,例如,如果我滚动 6 3 5 6 6 1,我是否能够将 6 个值之一重新滚动为新值,以便只有 2 个值为 6 的值和 4 个不是 6 的值?
任何支持将不胜感激。
提前致谢
回答
没有循环的解决方案可能是:
condition = which(Rolls==6)
if(length(condition)>=3){
Rolls[condition[3:length(condition)]] = sample(1:5, length(condition)-2, replace=TRUE)
}
condition用 6 表示 Rolls 中的位置,如果超过 2,则选择第三个Rolls[condition[3:length(condition)]]并重新采样。
第二个问题可能是这样的:
remove = 3
Rolls = Rolls[-which(Rolls==remove)[1]]
如果您愿意,您可以轻松地将它们放入函数中
编辑 1
为了使第二个答案更具交互性,您可以为其构建一个函数:
remove.roll = function(remove, rolls){
rolls = rolls[-which(rolls==remove)[1]]}
然后用户可以remove随心所欲地调用该函数。您还可以制作一个从提示中获取信息的程序:
remove = readline(prompt="Enter number to remove: ")
print(Rolls = Rolls[-which(Rolls==remove)[1]])