Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
176 views
in Technique[技术] by (71.8m points)

Generate or handle a missing argument in function in R

x = 1

simple <- function(p,q){
            return(q)
}

test = simple(x,y)

Error in simple(x, y) : object 'y' not found

Please Note : Even if I don't create a variable "y", I should not get this error. Instead I want a message to be thrown saying "No data".

question from:https://stackoverflow.com/questions/65939559/generate-or-handle-a-missing-argument-in-function-in-r

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use try() (or the more elaborate tryCatch() to do this. For example,

x = 1

simple <- function(p,q){
  q <- try(force(q), silent = TRUE)
  if (inherits(q, "try-error")) {
    warning("No data")
    q <- NULL
  }
  return(q)
}

test = simple(x,y)
#> Warning in simple(x, y): No data

Created on 2021-01-28 by the reprex package (v0.3.0)

What the force() function does is evaluate the argument. If that fails, it returns an error: but try() catches that. (You don't actually need to call force(q), it would be enough to use try(q), but I think the explicit version is clearer.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...