본문 바로가기

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

[복습] R(programming language) 자료구조(리스트) (4) + 복습후기(20231123)

728x90
반응형

[리스트]

 

key별로 데이터를 분류/저장하여 빠른 저장/출력이 용이하다.

2차원이 아닌 key  별로 데이터를 단순히 분류해둔 자료 구조이다.

층(=key) 별로 서로 독립적인 대상이며,  key별로는 서로 다른 데이터 타입을 가질 수 있으나 같은  key 안에서는 벡터로 만들어지기 때문에 같은 데이터 타입만 가능하다(단일 데이터 타입으로 구성)

 

1. 생성

위와 같이 생성이 가능하며 list2처럼 key에 이름을 부여할 수도 있다.

보통 리스트를 생성하기보다는 함수의 결과가 리스트로 많이 나온다.

 

 

2. 색인

위와 같이 리스트가 존재할 때

list[1] 처럼 출력하면 리스트의 구조가 유지된 채 출력되는 것이고

list1[[1]] 처럼 출력하면 벡터의 형태로 출력된다.

key에 이름이 있는 경우

list2['key1'] 처럼 출력할 수 있으며 이렇게 대괄호 하나만 쓰면 리스트 구조로 출력되며

list2[['key1']]로 출력하면 벡터로 출력된다.

 

리스트 안의 원소는 층을 스킵하고는 접근할 수가 없는데, 즉 원소의 직접 접근이 불가하다.

그러면 리스트 안의 원소를 추출하려면 어떻게 접근해야 할까

Line 4번처럼 하면 위에서 말했듯 리스트로 출력되는 형식이다.

Line 5의 의미는 2층 선택 결과(리스트)에서 3층을 또 선택하는 의미이다. 2층 하나를 선택했는데 그 안에 여러 층이 있을리가 없기 때문에 말이 되지 않는 문법이다.

그렇기 때문에 Line6처럼 2층선택 결과(벡터) 에서 세 번째 원소를 선택하는 구조로 접근하여야 한다.

 

728x90

 

 

3. 구조

legnth() 는 key의 수를 의마하며

lengths()는 key 별 원소의 수를 나타낸다.

원래 length는 벡터에서는 원소 개수를 리턴하는 것인데 리스트 입장에서는 층부터 만나게 되므로 층의 개수가 출력된다.

이렇게 테스트 해보면 알 수 있다.

 

list끼리 비교해본다면 2와 b는 각 key안의 벡터 안에서 똑같이 두 번째에 위치해있으나 동시에 선택하거나 비교할 수 었다. 각각 독립적인 원소들이어서 같이 명령할 수 없다. 반복문을 아직 배우지 않았기 때문이다.

 

 

list에 key를 추가해보겠다.

Line 4처럼 key를 불러오는 것을 key indexing 이라고 한다

 

Line 6에서 자료가 없는 key 위치에 key indexing을 하여 그 곳에 값을 넣을 수 있다.

 

Line 8처럼 이름이 없는 방식의 key 추가도 있다.

 

그러나 Line 10처럼 하면 경고메시지가 뜬다.

왜냐하면 수정이라고 하는 것은 왼쪽과 오른쪽의 자료 구조가 일치하여야 하는데, 리스트를 열어놓고 벡터로 업데이트를 하려고 해서 그렇다.

비정상처리되어 맨 마지막 결과를 보면 1만 들어간 것을 알 수 있다.

 

 

이렇게 하면 key 이름을 출력할 수 있고, key 이름을 넣고 싶으면 화살표로 선언하면 된다.

 

예제를 하나 풀어보자.

student.csv  파일 데이터에서 이윤나 학생의 전화번호의 지역번호를 출력하여라(split 사용)

 

 

연습문제를 풀어보자

1) emp 데이터에서 sal 칼럼을 모두 4자리로 변경하여라(800 → 0800)

 

2)  student 데이터에서 ID 값을 모두 10자리로 변경하여라(앞에 * 삽입)

 

3) student 데이터에서 이름값을 이름 길이에 맞게 모두 xxx 처리하여라.

 

 

 

복습후기

내일은 어려운 루프를 배운다고 했다.

금요일만 버티자

728x90
반응형