본문 바로가기

배우기/복습노트[R과 분석]

[복습] R(programming language) 반복문(for문) + 복습후기(20231124)

728x90
반응형

R에서의 반복문인 for문을 살펴보자.

문법은 아래와 같다.

 

for (반복 변수 in 대상) {

   반복할 문장

}

반복 변수: for 문 내부에서 사용할 임시 변수

 

 

바로 예시를 들어보겠다.

예) 1부터 10까지 출력하여라

 

 

예) emp에서 각 SAL에 10%를 인상한 값을 출력하여라.

 

 

가장 중요한 for문과 if문의 혼합을 살펴보겠다.

단계가 중요하니 차례차례 확인해보자.

 

직전 게시글에서 풀지 못한, 

DEPTNO가 10일 때 인사부, 20일 때 총무부, 30일 때 재무부를 if문을 사용하여 출력하여라.

 

위에 배운대로 적용하자면

 

이렇게 작성했는데 어떠한 값도 리턴해주지 않는다.

for문의 특성상 반복을 통해 여러 값이 리턴되는데 이 리턴된 값을 저장할 자료구조를 선언해야 하기 때문이다.

즉 for문은 여러 개를 반복해주기는 하지만 여러 개를 담아줄 공간을 정의해주지 않아서 리턴되지 않는다.

 

따라서 담을 공간을 dname으로 정의한 후 출력하였는데 다른 문제가 발생한다.

 

이는 결과를 계속 dname에 덮어 씌웠기 때문이다. 조건문에서 출력되는 값들을 누적하는 자료 구조를 작성하여 보자.

 

주의할 점은 처음에 빈 벡터도 정의해 주어야 한다는 것이다. 

c대신 append를 사용하여도 무방하다.

파이썬도 마찬가지로 if문에 여러 값을 가진 객체를 쓸 수가 없다. R처럼 loop가 필요하다.

 

그리고 위 결과를 업데이트 하려면 emp$DNAME <- dname1로 마무리 하면 된다.

 

728x90

 

그럼 예제를 풀어보자.

예) emp에서 각 직원의 급여 등급을 출력하여 저장하여라(GRADE 컬럼). 급여 등급은 2000 이하는 C, 2000 초과 3000 이하는 B, 나머지는 A

 

 

예) split 결과(list)에서 정해진 위치의 원소값 가져오기

 

프로그래밍이 어려우면 스칼라 테스트를 먼저 해보라고 하셨다. 하나에 대하여 집중하고, 한 문장이 완성되면 그 완성된 범위를 어떻게 전체로 확장할 수 있을지 고민하라고 하셨다.

 

예를 들어 professor에서 email의 @ 앞 부분을 출력하면 아래와 같다.

 

 

바로 예제에 적용하여보자.

std$TEL에서 국번을 추출하여보자.

풀이 방법은 두 가지가 있다.

 

객체에서 원소를 뽑기 위한 위치를 전달하는 방법으로 이를 위치기반 반복문이라고 한다.

그리고 다른 방법으로는 객체가 바뀌는 객체지향 반복문이 있다. 객체에 원소 하나씩을 fetch하는 방식이다.

(여기서 fetch란 사용자에게 꺼내주는 역할을 fetch라고 한다)

 

먼저 위치 기반 반복문으로 풀어보겠다.

 

 

 

다음은 객체지향 반복문이다.

 

 

여기까지가 반복문이다.

 

 

복습후기

24일 수업인데 24일에는 오후에 문제풀이에 집중하였고, 노트정리는 주말동안 하려고 했는데 주말에 푹 쉬느라 정리를 못했다. 결국 월요일 새벽 두 시에 일어나 마무리 하는 중.

진도량이 적어 다행이다. 잘 따라잡은 것 같다.

오늘부터 또 이번 한 주 열심히 달려야겠다.

728x90
반응형