R:将元素添加到tryCatch中的循环列表中
我试图解析包含在dataframe列中的JSON,其中一些列已损坏。作为第一步,我想识别损坏的行,并使用它来子集数据帧 我使用了使用R:将元素添加到tryCatch中的循环列表中,r,list,loops,try-catch,R,List,Loops,Try Catch,我试图解析包含在dataframe列中的JSON,其中一些列已损坏。作为第一步,我想识别损坏的行,并使用它来子集数据帧 我使用了使用c()填充列表的技巧(尽管我知道它很慢): myRows% fromJSON()%>% 长度()}, error=function(e){print(i);myRows这里有一个小例子,说明如何解决您的问题:(每个人似乎都在为哭泣)这里有一个小例子,说明如何解决您的问题:(每个人似乎都在为哭泣,虽然已经有了一个解决方案,但我将以另一种方式发布,而不创建环境。 如果将
c()
填充列表的技巧(尽管我知道它很慢):
myRows%
fromJSON()%>%
长度()},
error=function(e){print(i);myRows这里有一个小例子,说明如何解决您的问题:(每个人似乎都在为哭泣)这里有一个小例子,说明如何解决您的问题:(每个人似乎都在为哭泣,虽然已经有了一个解决方案,但我将以另一种方式发布,而不创建环境。
如果将tryCatch
的结果分配给一个变量,则可以稍后对其进行测试。诀窍是在error函数中返回错误。
基于已接受答案的示例,出现相同的错误
vec <- rep(1:0, each = 5)
ans <- lapply(seq_along(vec), function(i) {
tryCatch({ if(vec[i]) stop("error message") else "success" },
error = function(e) e)
})
bad <- sapply(ans, inherits, "error")
#[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
vec虽然已经有了,但我将以另一种方式发布,而不创建环境。
如果将tryCatch
的结果分配给一个变量,则可以稍后对其进行测试。诀窍是在error函数中返回错误。
基于已接受答案的示例,出现相同的错误
vec <- rep(1:0, each = 5)
ans <- lapply(seq_along(vec), function(i) {
tryCatch({ if(vec[i]) stop("error message") else "success" },
error = function(e) e)
})
bad <- sapply(ans, inherits, "error")
#[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
vec这是一个范围问题(您在函数的本地范围内执行赋值)。您可能可以执行myRows这是一个范围问题(您在函数的本地范围内执行赋值)。您可能可以执行myRows
#> env$ans
# [1] "error" "error" "error" "error" "error" "works" "works" "works" "works" "works"
vec <- rep(1:0, each = 5)
ans <- lapply(seq_along(vec), function(i) {
tryCatch({ if(vec[i]) stop("error message") else "success" },
error = function(e) e)
})
bad <- sapply(ans, inherits, "error")
#[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE