以下代碼行為不當。當我在 RStudio 中運行它進行測驗時,它很好。我得到了 custom_vars 的值,這是有道理的。一旦我嘗試使用 Knit 運行此代碼,它每次都會回傳錯誤。
我試過在 custom_vars 的范圍內玩 aorund,但這也不起作用。
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 )
}
uj5u.com熱心網友回復:
這是不function,沒有必要return。將return導致錯誤的觸發e在RROR功能tryCatch。
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"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/394666.html
