R 如何覆盖函数内设置的默认值

R 如何覆盖函数内设置的默认值,r,for-loop,R,For Loop,我想在每次调用函数时更改fout的默认值,并用上次for循环结束时得到的fout值替换它 我尝试的如下所示,我将fout的默认值设置为零,但每次调用该函数时都未能更改默认值 Rolltwicethenstop <- function(sc, btt, sh, dout, dsel, dleft, porder) { fout<-0 for (i in 1:3) { if(dout[i]=="F") { fout=fout+1 }

我想在每次调用函数时更改fout的默认值,并用上次for循环结束时得到的fout值替换它

我尝试的如下所示,我将fout的默认值设置为零,但每次调用该函数时都未能更改默认值

Rolltwicethenstop <- function(sc, btt, sh, dout, dsel, dleft, porder)
{ 
  fout<-0
  for (i in 1:3)
  {
    if(dout[i]=="F")
    {
      fout=fout+1
    }
  }  
  if(fout+(13-length(dleft))>=6&btt>0)
  {
    return(FALSE)
  }else if(fout+(13-length(dleft))>=6&&btt>0&&sh>0)
  {
   return(FALSE)
  }else
  {
    return(TRUE)
  }
}
Rolltwicethenstop 0)
{
返回(假)
}否则,如果(fout+(13长度(dleft))>=6&&btt>0&&sh>0)
{
返回(假)
}否则
{
返回(真)
}
}

在我第一次调用函数时,fout的起始值是0,如果dout中有两个“F”,那么在for循环结束时,fout=2。我希望在我第二次调用函数时使用fout=2作为起始值,并将所有“F”相加在游戏的所有回合中我总共得到了。

fout
变量的赋值更改为
是否有其他不使用全局变量的方法?我需要一次运行多个函数,如果所有函数共享相同的全局变量,则会产生错误是,我对替代方法的解释是否适用于您?它适用于一个函数,但如果我想将其应用于同时运行的多个玩家函数,它将不起作用,因为来自前玩家的fout值将与之后运行的其他玩家函数相加it@XingqiFei如果我的回答回答了你的问题,考虑接受答案,在左上方的滴答声。如果没有,请告诉我如何改进。在这种情况下,您可以使用
porder
参数更改每个
fout
变量的名称?像我在Alt方法2中详细介绍的那样,只编写一个文件可能是最简单的,但速度较慢?用porder代替player.name?
fout <- 0

Rolltwicethenstop <- function(sc, btt, sh, dout, dsel, dleft, porder)
{ 
  for (i in 1:3)
  {
    if(dout[i]=="F")
    {
      fout<<-fout+1
    }
  }  
  if(fout+(13-length(dleft))>=6&btt>0)
  {
    return(FALSE)
  }else if(fout+(13-length(dleft))>=6&&btt>0&&sh>0)
  {
    return(FALSE)
  }else
  {
    return(TRUE)
  }
}
Rolltwicethenstop <- function(fout, sc, btt, sh, dout, dsel, dleft, porder)
return(list(logic = FALSE, fout = fout))
write.csv(0, "fout")
getwd()
read.csv("fout")[1,2]