R 中的 trycatch 作用域
trycatch scope in R
以下代码有问题。当我 运行 在 RStudio 中测试它时,它很好。我得到了 custom_vars 的值,这很有意义。一旦我尝试用 Knit 运行 这段代码,它每次都会 returns 错误。
我试过在 custom_vars 范围内播放 ao运行d,但这也不起作用。
report_params <- "-summary-private-room-tenure-minmax-map-Analyse newVar group-Analyse oldVar group"
custom_vars <- tryCatch(
{
a <- report_params
a <- as.list(strsplit(a, "-")[[1]])
a <- str_subset(a, pattern = "Analyse.*.group")
if (length(a) > 0) {
a <- sapply(strsplit(a, split=' group' , fixed=TRUE), function(x) (x[1]))
a <- sapply(strsplit(a, split='Analyse ', fixed=TRUE), function(x) (x[2]))
custom_vars <- c(a) # no return in try code!
} else {
ret <- c("zero legth")
return( ret )
}
}, error=function(e) {
ret <- c("error")
return( ret )
}
)
如果我去掉 trycatch,它又可以正常工作了。我已经尝试了我能想到的一切。这毫无意义。
a <- params$report_params
a <- as.list(strsplit(a, "-")[[1]])
a <- stringr::str_subset(a, pattern = "Analyse.*.group")
if (length(a) > 0) {
a <- sapply(strsplit(a, split=' group' , fixed=TRUE), function(x) (x[1]))
a <- sapply(strsplit(a, split='Analyse ', fixed=TRUE), function(x) (x[2]))
custom_vars <- c(a) # no return in try code!
} else {
custom_vars <- c("zero legth")
# return( ret )
}
这不是function
,不需要return
。 return
导致错误并触发了 tryCatch
中的 e
rror 函数。
custom_vars <- tryCatch({
a <- report_params
a <- as.list(strsplit(a, "-")[[1]])
a <- stringr::str_subset(a, pattern="Analyse.*.group")
if (length(a) > 0) {
a <- sapply(strsplit(a, split=' group', fixed=TRUE), function(x) x[1])
sapply(strsplit(a, split='Analyse ', fixed=TRUE), function(x) x[2])
} else {
"zero legth"
}
}, error=function(e) "error")
custom_vars
# [1] "newVar" "oldVar"
以下代码有问题。当我 运行 在 RStudio 中测试它时,它很好。我得到了 custom_vars 的值,这很有意义。一旦我尝试用 Knit 运行 这段代码,它每次都会 returns 错误。
我试过在 custom_vars 范围内播放 ao运行d,但这也不起作用。
report_params <- "-summary-private-room-tenure-minmax-map-Analyse newVar group-Analyse oldVar group"
custom_vars <- tryCatch(
{
a <- report_params
a <- as.list(strsplit(a, "-")[[1]])
a <- str_subset(a, pattern = "Analyse.*.group")
if (length(a) > 0) {
a <- sapply(strsplit(a, split=' group' , fixed=TRUE), function(x) (x[1]))
a <- sapply(strsplit(a, split='Analyse ', fixed=TRUE), function(x) (x[2]))
custom_vars <- c(a) # no return in try code!
} else {
ret <- c("zero legth")
return( ret )
}
}, error=function(e) {
ret <- c("error")
return( ret )
}
)
如果我去掉 trycatch,它又可以正常工作了。我已经尝试了我能想到的一切。这毫无意义。
a <- params$report_params
a <- as.list(strsplit(a, "-")[[1]])
a <- stringr::str_subset(a, pattern = "Analyse.*.group")
if (length(a) > 0) {
a <- sapply(strsplit(a, split=' group' , fixed=TRUE), function(x) (x[1]))
a <- sapply(strsplit(a, split='Analyse ', fixed=TRUE), function(x) (x[2]))
custom_vars <- c(a) # no return in try code!
} else {
custom_vars <- c("zero legth")
# return( ret )
}
这不是function
,不需要return
。 return
导致错误并触发了 tryCatch
中的 e
rror 函数。
custom_vars <- tryCatch({
a <- report_params
a <- as.list(strsplit(a, "-")[[1]])
a <- stringr::str_subset(a, pattern="Analyse.*.group")
if (length(a) > 0) {
a <- sapply(strsplit(a, split=' group', fixed=TRUE), function(x) x[1])
sapply(strsplit(a, split='Analyse ', fixed=TRUE), function(x) x[2])
} else {
"zero legth"
}
}, error=function(e) "error")
custom_vars
# [1] "newVar" "oldVar"