如何阻止replicate()函数在R中打印所有结果?
我是R的新手,我有一个小问题。我在R中为我的老虎机编写了以下代码(来自Garrett Grolemund的“使用R进行实际编程”) 当我为我的老虎机使用play()函数时,你可以在下面看到,我得到一个数字,告诉我我赢了多少。当我使用以下代码复制结果时:如何阻止replicate()函数在R中打印所有结果?,r,function,printing,replicate,R,Function,Printing,Replicate,我是R的新手,我有一个小问题。我在R中为我的老虎机编写了以下代码(来自Garrett Grolemund的“使用R进行实际编程”) 当我为我的老虎机使用play()函数时,你可以在下面看到,我得到一个数字,告诉我我赢了多少。当我使用以下代码复制结果时: slot.mach <- replicate(1000,play()) 我不知道你是否需要帮助我,但这是我的老虎机的全部代码: score <- function(symbols) { #identify case of symb
slot.mach <- replicate(1000,play())
我不知道你是否需要帮助我,但这是我的老虎机的全部代码:
score <- function(symbols) {
#identify case of symbols frequency
same <- length(unique(symbols)) == 1
bars <- symbols %in% c("B","BB","BBB")
#get prize
if (same) {
payouts <- c("DD" = 100,"7" = 80, "BBB" = 40, "BB" = 25, "B" = 10, "C" = 10,
"0" = 0)
prize <- unname(payouts[symbols[1]])
} else if (all(bars)){
prize <- 5
} else {
cherries <- sum(symbols == "C")
prize <- c(0,2,5)[cherries+1]
}
#adjust for diamonds
diamonds <- sum(symbols == "DD")
prize <- prize*(2^diamonds)
}
scorereplicate
是print
ing,因为您是replicate
ing一个调用print
将print
调用更改为return,您将在分配给replicate
返回值的对象中获得一个分数数组
在get\u symbols
的定义周围添加一个假定缺少的右括号,您可以得到:
play <- function() {
get_symbols <- function() {
wheel <- c("DD","7","BBB","BB","B","C","0")
sample(wheel,size=3,replace=TRUE,
prob=c(0.03,0.03,0.06,0.1,0.25,0.01,0.52))
}
symbols <- get_symbols()
score(symbols)
}
play就像@DanHall说的,你不想打印你的结果。我已经根据你想要的修改了你的函数。请注意,函数非常有用,因为我们只需要定义一次,我们可以用一种更具视觉吸引力的方式调用它们。你的获取符号fu每次运行play
时都会定义nction,这是不必要的。您希望代码看起来像
score <- function(symbols) {
#identify case of symbols frequency
same <- length(unique(symbols)) == 1
bars <- symbols %in% c("B","BB","BBB")
#get prize
if (same) {
payouts <- c("DD" = 100,"7" = 80, "BBB" = 40, "BB" = 25, "B" = 10, "C" = 10,
"0" = 0)
prize <- unname(payouts[symbols[1]])
} else if (all(bars)){
prize <- 5
} else {
cherries <- sum(symbols == "C")
prize <- c(0,2,5)[cherries+1]
}
#adjust for diamonds
diamonds <- sum(symbols == "DD")
prize <- prize*(2^diamonds)
prize
}
get_symbols <- function() {
wheel <- c("DD","7","BBB","BB","B","C","0")
sample(wheel,size=3,replace=TRUE,
prob=c(0.03,0.03,0.06,0.1,0.25,0.01,0.52))
}
play <- function() {
symbols <- get_symbols()
score(symbols)
}
score您的play
函数在此不完整。您可能缺少get\u symbols
或play
的右括号。哦,还有一件事……欢迎使用堆栈溢出,正确编写您的第一个问题做得很好!是的,包含用户定义函数的定义非常重要当您生成错误时显示led。向上投票!
roll.dice <- function(){x <- 1:6
y <- c(1/8,1/8,1/8,1/8,1/8,3/8)
dice<-sample(x,size=2,replace=TRUE,prob=y)
sum(dice)}
roll.dice <- replicate(10000,roll.dice())
play <- function() {
get_symbols <- function() {
wheel <- c("DD","7","BBB","BB","B","C","0")
sample(wheel,size=3,replace=TRUE,
prob=c(0.03,0.03,0.06,0.1,0.25,0.01,0.52))
}
symbols <- get_symbols()
score(symbols)
}
score <- function(symbols) {
#identify case of symbols frequency
same <- length(unique(symbols)) == 1
bars <- symbols %in% c("B","BB","BBB")
#get prize
if (same) {
payouts <- c("DD" = 100,"7" = 80, "BBB" = 40, "BB" = 25, "B" = 10, "C" = 10,
"0" = 0)
prize <- unname(payouts[symbols[1]])
} else if (all(bars)){
prize <- 5
} else {
cherries <- sum(symbols == "C")
prize <- c(0,2,5)[cherries+1]
}
#adjust for diamonds
diamonds <- sum(symbols == "DD")
prize <- prize*(2^diamonds)
prize
}
get_symbols <- function() {
wheel <- c("DD","7","BBB","BB","B","C","0")
sample(wheel,size=3,replace=TRUE,
prob=c(0.03,0.03,0.06,0.1,0.25,0.01,0.52))
}
play <- function() {
symbols <- get_symbols()
score(symbols)
}