如何阻止replicate()函数在R中打印所有结果?

如何阻止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

我是R的新手,我有一个小问题。我在R中为我的老虎机编写了以下代码(来自Garrett Grolemund的“使用R进行实际编程”)

当我为我的老虎机使用play()函数时,你可以在下面看到,我得到一个数字,告诉我我赢了多少。当我使用以下代码复制结果时:

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)


}

score
replicate
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)
}