R 如何仅返回函数中存在的对象

R 如何仅返回函数中存在的对象,r,function,return,missing-data,R,Function,Return,Missing Data,我试图写一个函数,在其中我创建了向量,比如a,b,c。我编写了几个条件语句来创建这些向量,其中一些可能在函数末尾不存在。我正在努力写函数的返回;我想将它们作为列表返回: return(list(a, b, c)) 但是我需要找到一种方法来重新编写它,例如,如果b不存在,a和c将被返回,也许我可以为b添加一条“不存在”的消息 你能帮我找到一个简单的解决办法吗?谢谢 不是最优雅的,但这可以做到 如果您需要检查大量对象的存在,那么最好以函数形式编写我在If-else中编写的内容 func <-

我试图写一个函数,在其中我创建了向量,比如a,b,c。我编写了几个条件语句来创建这些向量,其中一些可能在函数末尾不存在。我正在努力写函数的返回;我想将它们作为列表返回:

return(list(a, b, c))
但是我需要找到一种方法来重新编写它,例如,如果b不存在,a和c将被返回,也许我可以为b添加一条“不存在”的消息


你能帮我找到一个简单的解决办法吗?谢谢

不是最优雅的,但这可以做到

如果您需要检查大量对象的存在,那么最好以函数形式编写我在If-else中编写的内容

func <- function() {

 a <- 1 # so a exists

 ret_list <- list()
 if (exists("a", inherits = FALSE)) {
   ret_list <- c(ret_list, a = a)
 } else {
   ret_list <- c(ret_list, a = "a doesn't exist")
 }


 if (exists("b", inherits = FALSE)) {
  ret_list <- c(ret_list, b = b)
 } else {
  ret_list <- c(ret_list, b = "b doesn't exist")
 }

  ret_list
}

是什么定义了b不存在?它是一个NA值吗?不,它只是一个不存在的对象。我编写了一个函数来创建b,如果其中一个输入有某个维度。@AnaAntunes我已经稍微编辑了答案。如果你愿意,请随时详细说明你的问题,我明天晚些时候会看看我是否能改进答案。
ret <- func()
ret
#$a
#[1] 1
#
#$b
#[1] "b doesn't exist"