Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:将元素添加到tryCatch中的循环列表中_R_List_Loops_Try Catch - Fatal编程技术网

R:将元素添加到tryCatch中的循环列表中

R:将元素添加到tryCatch中的循环列表中,r,list,loops,try-catch,R,List,Loops,Try Catch,我试图解析包含在dataframe列中的JSON,其中一些列已损坏。作为第一步,我想识别损坏的行,并使用它来子集数据帧 我使用了使用c()填充列表的技巧(尽管我知道它很慢): myRows% fromJSON()%>% 长度()}, error=function(e){print(i);myRows这里有一个小例子,说明如何解决您的问题:(每个人似乎都在为哭泣)这里有一个小例子,说明如何解决您的问题:(每个人似乎都在为哭泣,虽然已经有了一个解决方案,但我将以另一种方式发布,而不创建环境。 如果将

我试图解析包含在dataframe列中的JSON,其中一些列已损坏。作为第一步,我想识别损坏的行,并使用它来子集数据帧

我使用了使用
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