for 루프 내의 연산이 R 인 경우 for 루프의 다음 반복으로 이동하는 간단한 방법을 찾고 있습니다.오류가있는 경우 for 루프의 다음 루프 반복
나는 간단한 경우 아래 다시 한 :
for(i in c(1, 3)) {
test <- try(i+1, silent=TRUE)
calc <- if(class(test) %in% 'try-error') {next} else {i+1}
print(calc)
}
이 올바르게 나에게 다음과 같은 CALC 값을 제공합니다. 루프
for(i in c(1, "a", 3)) {
test <- try(i+1, silent=TRUE)
calc <- if(class(test) %in% 'try-error') {next} else {i+1}
print(calc)
}
이
이 작동하지 않습니다[1] 2
[1] 4
그러나 나는 숫자가 아닌 값을 포함하는 전에서 벡터를 변경하면. 나는 i에서 비 숫자 값을 제외한 벡터와 같은 calc 값을 원했습니다.
나는 다음과 같은 tryCatch를 사용하여 시도 : 그러나for(i in c(1, "a", 3)) {
calc <- tryCatch({i+1}, error = function(e) {next})
print(calc)
}
, 나는 다음과 같은 오류 얻을 :
Error in value[[3L]](cond) : no loop for break/next, jumping to top level
누군가가 제가에서 루프를 사용하여이를 얻을 수있는 방법을 이해하는 데 도움이 시겠어요을 아르 자형?
'c (1, "a", 3)'이 실제로 무엇인지 검사 할 수 있습니다. 나는 중간 요소 만이 성격이라고 믿는다. 그러나 그것은 틀렸다. – Dason
왜 이렇게하려고하는지 잘 모르겠습니다. 이것은 단순한 예입니까? 그렇지 않은 경우 입력 벡터에서 'as.numeric'을 사용하면 문자가 NA로 변환됩니다. 그것으로 주변을 놀아 라. as.numeric (c (1, "k", 3 ")) + 1' – Dason
@Dason 실제로 for 루프 예제 내에서 제어 흐름의 오류 처리에 더 관심이있다. 내가 가진 더 큰 스크립트의 간단한 경우. 나는 'Error'를 던지는 시나리오를 재현하기 위해 문자 요소를 넣음으로써 벡터의 정의를 위반했다. 희망이 내 질문을 명확히합니다. – ed0reddie