我有一个函数定义为

myFun <- function(x, y, ...) {
  # using exists
  if (exists("z")) { print("exists z!") }
  # using missing
  try(if (!missing("z")) { print("z is not missing!") }, silent = TRUE)
  # using get
  try(if (get("z")) { print("get z!") }, silent = TRUE)

  # anotherFun(...)
}

在这个函数中,我想判断用户是否在参数列表中输入"z".我该怎么做?我试过exists("z")missing("z")get("z"),但都不管用.

推荐答案

@Sacha Epskamp有一个很好的解决方案,但并不总是有效.失败的情况是,如果"z"参数作为NULL传入...

# Sacha's solution
myFun <- function(x, y, ...) { 
  args <- list(...)
  exist <- !is.null(args[['z']])
  return(exist)
}

myFun(x=3, z=NULL) # FALSE, but should be TRUE!


# My variant
myFun2 <- function(x, y, ...) {
  args <- list(...)
  exist <- "z" %in% names(args)
  exist
}

myFun2(x=3, z=NULL) # TRUE

R相关问答推荐

使用%in%时如何应用多个条件?

如何向使用plot_smooths()函数显示的GAM结果图表中添加点?

R:将列名的字符载体传递给可以 Select 接受多个参数的函数

在处理因素时,Base R grep家族比stringr变体快得多

在数据表中呈现数学符号

使用R的序列覆盖

在(g)子中使用asserable字符

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

如何在kableextra调用cell_spec()中忽略NA?

我想在R中总结一个巨大的数据框架,使我只需要唯一的lat、lon、Date(Year)和Maxium Value""""""""

如何直接从R中的风险分数计算c指数?

在R中创建连续的期间

基于数据集属性将科分配给物种

在R中,如何从一系列具有索引名的变量快速创建数据帧?

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

在散点图中使用geom_point放置线图例

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

访问数据帧中未定义的列时出现R错误

主题(Legend.key=Element_RECT(Fill=&Quot;White&Quot;))不起作用

计算来自单独分组的分幅的值的百分位数