R 인덱스 변경 - R indegseu byeongyeong

리스트 (list)

R에서 가장 광범위하게 사용되는 자료구조로 벡터, 행렬, 데이터프레임 및 리스트 등 다양한 자료형의 객체를 원소로 가질 수 있다.

리스트를 인덱싱할 때 대괄호를 겹쳐서 [[ ]] 사용한다. 

벡터처럼 대괄호를 하나만 사용하면 해당 원소를 항상 리스트로 출력

하지만 대괄호를 겹쳐서 사용하면 해당 원소를 본래 자료구조로 출력

'겹대괄호' 안에는 인덱스를 단 하나만 지정

리스트 원소에 이름이 있으면 달러 기호 ($)로 해당 원소 선택 가능

리스트$원소명 : 해당 원소를 본래 자료구조로 출력

리스트에 없는 원소명을 지정하면 항상 NULL을 출력

R함수가 실행된 결과로 여러 객체를 함께 반환하려면, 결과를 리스트로 생성하여 반환하는 것이 좋다. 

대부분의 R함수는 리스트를 반환할 때, 원소마다 이름을 추가하므로 달러 기호를 사용한 인덱싱이 가능하다.

사용자 정의 함수에서도 활용 가능


list( ) : 리스트 생성함수

원소로 사용될 객체를 콤마로 나열

원소마다 이름 지정 가능, 원소명과 객체를 등호(=)로 연결

num <- seq(from=1, to=10, by=2)
cha <- rep(x = c('a','b'), each=3)

> print(num)
[1] 1 3 5 7 9


> print(cha)
[1] "a" "a" "a" "b" "b" "b"

lst1 <- list(num, cha)

> print(lst1)

[[1]]
[1] 1 3 5 7 9

[[2]]
[1] "a" "a" "a" "b" "b" "b"

> class(lst1) : 리스트의 클래스는 리스트
[1] "list"


> str(object = lst1) : 리스트의 구조를 출력
List of 2
 $ : num [1:5] 1 3 5 7 9
 $ : chr [1:6] "a" "a" "a" "b" ...

리스트의 인덱싱

1) 겹대괄호 안에 인덱스를 단 하나만 지정한다.

lst1[[1]]

2) 리스트에 원소명이 있으면 달러 기호를 사용할 수 있다. 

lst1$a

3) 대괄호를 사용하면 항상 리스트로 출력

lst1[1]

lst1[c(1,3)]

리스트 원소의 추가, 삭제 및 변경

1) 추가 : 리스트의 새로운 원소명에 객체를 할당

lst1$d <- 1:5

2) 삭제 : 삭제할 원소명에 NULL을 할당

lst2$a <- NULL

3) 전체 변경 : 변경할 원소명에 객체를 할당

lst2$b <- letters[1:5]

4) 일부 변경 : 변경할 원소의 일부만 변경

lst2$b[1] <- 'A'

이 함수를 영어대문자를 저장하고 있는 내장형 함수 LETTERS의 인덱스로 활용하면 기존 데이터프레임 행의 길이만큼 데이터를 자를 수 있고, 새로운 칼럼을 만들어 값을 추가할 수 있다.

 

※ 내장형 함수의 종류는 'R 스칼라 Scalar' 글에 업로드 되어있다.

small22.tistory.com/6

 

R 스칼라 Scalar

스칼라(scalar)란 단일 차원(0차원)의 값을 갖는 데이터 타입이다. R에서의 기본 데이터 타입은 벡터(vector)임으로 스칼라는 다른 의미로 데이터 길이가 1인 벡터이다. R에서 데이터 타입별 차원을

small22.tistory.com

 

 

  • 값 제외
> student[-4]  
   number score gender
1       1    90      M
2       2    85      F
3       3    83      M
4       4    75      M
5       5    63      F
6       6    55      M
7       7    97      M
8       8    80      F
9       9    77      F
10     10    59      M
> student[-c(4:10),]  
  number score gender english
1      1    90      M       A
2      2    85      F       B
3      3    83      M       C

 

 

  • 값 치환
> length(student)
[1] 4
> length(student$english)
[1] 10
> student$english = letters[1:length(student$english)]
> student
   number score gender english
1       1    90      M       a
2       2    85      F       b
3       3    83      M       c
4       4    75      M       d
5       5    63      F       e
6       6    55      M       f
7       7    97      M       g
8       8    80      F       h
9       9    77      F       i
10     10    59      M       j

length() 함수는 데이터의 길이를 반환한다. 데이터프레임 객체는 넣으면 칼럼의 갯수를 반환하기 때문에 달러사인으로 칼럼하나를 불러오면 nrow() 함수와 마찬가지로 행의 갯수가 반환된다.

이번엔 영어소문자를 저장하고 있는 내장형함수 letters를 이용해 값을 치환하였다.

 

 

  • 조건식
> student[student$score>80,]
  number score gender english
1      1    90      M       a
2      2    85      F       b
3      3    83      M       c
7      7    97      M       g
> student$score[student$score > 80]
[1] 90 85 83 97

 

 

  • %in%
> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
0

 

 

 

 ◎ 데이터프레임 관련 함수

 

  • head()
> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
1

head() 함수는 기본적으로 위에서부터 6개의 행을 출력하고, 객체뒤에 출력할 행의 객수를 지정해 줄 수 있다.

이는 tail() 함수도 동일하다.

 

 

  • tail()
> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
2

 

 

  • str()
> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
3

str() 함수는 객체의 구조(structure)를 출력한다.

stringsAsFactors=TRUE 를 지정해주면 문자형 칼럼이 요인형(Factor)으로 바뀌어진다.

반대로 FALSE 를 지정해주면 요인형 칼럼이 문자형으로 바뀐다.

 

 

  • rownames(), colnames(), names()
> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
4

colnames() 함수와 names() 함수는 결과가 같다.

 

> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
5

 

 

  • rbind(), cbind()
> student$score
 [1] 90 85 83 75 63 55 97 80 77 59
> max(student$score)
[1] 97
6

cbind() 함수도 행의 길이가 동일하다면 위와 같은 방법으로 하나의 데이터프레임을 만들 수 있다.

 

 

※ R 데이터프레임 DataFrame 이전내용

small22.tistory.com/13

 

R 데이터프레임 DataFrame - 생성과 저장 text/csv/excel파일

데이터 프레임은 데이터를 엑셀(Excel)처럼 표의 형태로 저장하는 자료구조이다. 칼럼(열) 단위로 서로 다른 자료형을 갖는 데이터를 저장할 수 있고, R에서 가장 중요한 데이터 타입이다.  ◎ 데