R 为什么我的简单代码没有';t在全局环境中存储变量

R 为什么我的简单代码没有';t在全局环境中存储变量,r,R,我有一个奇怪的问题,函数的值应该存储在全局环境中。相反,它返回一个不应该执行的行的错误 DEV.OneCancerStrings <- function(Number){ if(!exists("Number")){ if(!exists("study_number")){ study_number <<- 1 specified_number <- study_number }else if(exists("study_

我有一个奇怪的问题,函数的值应该存储在全局环境中。相反,它返回一个不应该执行的行的错误

DEV.OneCancerStrings <- function(Number){
  if(!exists("Number")){
    if(!exists("study_number")){
      study_number <<- 1
      specified_number <- study_number   
    }else if(exists("study_number")){   
      study_number <<- study_number + 1   
      specified_number <- study_number   
    } 
  }else if(exists("Number")){ 
    specified_number <- Number 
  }
}

我知道了!我需要使用'missing'来计算函数参数

这是一个更大函数的开始,但如果没有参数,则全局环境中不会存储任何内容。请注意,这通常被视为一个非常糟糕的想法。返回新计数器和研究编号,而不是修改全局状态。如果您需要一个保持可变状态的对象,请将功能封装在一个类中。从软件工程的角度看

DEV.OneCancerStrings()
Error in DEV.OneCancerStrings() : 
  argument "Number" is missing, with no default