warn <- NULL
withwarn <- function(fun) { tryCatch(fun, warning=function(w) {
warn <<- append(warn, paste(time, conditionMessage(w))) } )}
withwarn(reqHistoricalData(tws,x,time,'1 min','5 D','0','HISTORICAL_VOLATILITY'))
我将一个函数传递给tryCatch,并希望获得参数time
的值
我用sys.call等尝试了几种方法,但看起来我的问题不同了:函数(w),time
没有传递,而函数(fun)时间只是函数字符串的一部分(仅在稍后的tryCatch中进行评估)
编辑(解决方案):
我刚为withwarn <- function(fun,y)
添加了另一个参数time
。
答案 0 :(得分:0)
这个怎么样:
warn <- NULL
withwarn <- function(fun) {
args <- match.call()
time_arg <- if("time" %in% names(args[[2]]))
eval(args[[2]][["time"]])
else {
eval(args[[2]][[4]])
}
tryCatch(fun, warning=function(w) { warn <<- append(warn, paste(time_arg, conditionMessage(w))) } )
}
reqHistoricalData <- function(tws, x, time, ...) warning("some warning.")
ans <- withwarn(reqHistoricalData(tws, x, Sys.time(), '1 min','5 D','0','HISTORICAL_VOLATILITY'))
但是,您在问题中的解决方法对我来说更好/更清洁。