R의 do-while 루프
do-while 스타일 루프를 작성하는 방법에 대해 궁금합니다.
repeat {}를 사용하고 if ()를 사용하여 조건을 확인하고 "break"제어 단어로 루프를 종료 할 수 있습니다.
정확히 무엇을 의미하는지 잘 모르겠습니다. 당신이 그것을 이해하거나 다른 해결책이 있다면 누군가가 자세히 설명해 주시겠습니까?
꽤 자명하다.
repeat{
statements...
if(condition){
break
}
}
아니면 내가 생각하는 것과 같은 것. do while 루프의 효과를 얻으려면 명령문 그룹 끝에서 조건을 확인하면됩니다.
> y=0
> while(y <5){ print( y<-y+1) }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
따라서 do_while
R에서 별도의 구조로 존재하지 않지만 다음과 같이 속일 수 있습니다.
repeat( { expressions}; if (! end_cond_expr ) {break} )
도움말 페이지를 보려면 ?while
또는 ?repeat
콘솔에서 입력 할 수없고 대신 ?'repeat'
또는 을 사용해야 ?'while'
합니다. 를 포함한 모든 "control-constructs" if
는 동일한 페이지에 있으며 "?"뒤에 문자 인용이 필요합니다. 그래서 인터프리터는 그것들을 불완전한 코드로 보지 않고 계속 "+"를 제공합니다.
다른 답변을 바탕으로 while 루프 구조를 사용하여 do-while 동작을 달성하는 예제를 공유하고 싶었습니다. while 조건 (TRUE로 초기화 됨)에서 간단한 부울 변수를 사용한 다음 나중에 if 문에서 실제 조건을 확인합니다. if 문 내에서 continue <-FALSE 대신 break 키워드를 사용할 수도 있습니다 (아마 더 효율적일 것입니다).
df <- data.frame(X=c(), R=c())
x <- x0
continue <- TRUE
while(continue)
{
xi <- (11 * x) %% 16
df <- rbind(df, data.frame(X=x, R=xi))
x <- xi
if(xi == x0)
{
continue <- FALSE
}
}
사용자 42-의 완벽한 접근 방식을 알아 차리기 {
* "동안"= "하지 않을 때까지 반복"
* 코드 동등성 :
do while (condition) # in other language
..statements..
endo
repeat{ # in R
..statements..
if(! condition){ break } # Negation is crucial here!
}
} 다른 사람들로부터 충분한 관심을받지 못했다면 구체적인 예를 통해 그의 접근 방식을 강조하고 제시하겠습니다. do-while에서 조건을 부정하지 않으면 ( !
또는 부정을 통해 ), 코드 과정에 따라 왜곡 된 상황 (1. 값 지속성 2. 무한 루프)이 존재합니다.
가우스에서 :
proc(0)=printvalues(y);
DO WHILE y < 5;
y+1;
y=y+1;
ENDO;
ENDP;
printvalues(0); @ run selected code via F4 to get the following @
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
R에서 :
printvalues <- function(y) {
repeat {
y=y+1;
print(y)
if (! (y < 5) ) {break} # Negation is crucial here!
}
}
printvalues(0)
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5
나는 여전히 조건을 부정하지 않으면 Salcedo의 대답이 틀렸다고 주장합니다. 위 코드에서 부정 기호를 제거하여이를 확인할 수 있습니다.
참조 URL : https://stackoverflow.com/questions/4357827/do-while-loop-in-r
'developer tip' 카테고리의 다른 글
git diff의 / a / b 접두사에 대한 이유는 무엇입니까 (0) | 2020.12.30 |
---|---|
WebKit : CSS 스케일 + translate3d로 흐릿한 텍스트 (0) | 2020.12.30 |
웹 인터페이스를 통해 리전간에 Amazon EC2 AMI를 이동합니까? (0) | 2020.12.29 |
안전하지 않은 세계 쓰기 가능 디렉토리 / Users / username in PATH, mode 040777 when running Ruby commands (0) | 2020.12.29 |
JSF 페이지에서 EL 변수 정의 및 재사용 (0) | 2020.12.29 |