160 likes | 527 Views
행렬과 배열. 2014 년 가을학기 손시운 ( ssw5175@kangwon.ac.kr ) 지도 교수 : 문양세 교수님. 행렬과 배열. 배열 ( 네이버 지식백과 ) 일정한 규칙에 따라 몇몇 요소가 나열되어 있는 데이터 집합 배열은 차원 을 가짐 행렬 행의 개수와 열의 개수라는 두 가지 속성을 추가로 갖는 벡터 행렬은 ‘ 배열 ’ 의 특이한 형태로 , 2 차원 배열이 곧 행렬 행렬은 벡터이므로 숫자형이나 문자형 같은 형식을 가짐. 행렬의 생성 (1/2).
E N D
행렬과 배열 2014년 가을학기 손시운(ssw5175@kangwon.ac.kr) 지도 교수: 문양세 교수님
행렬과 배열 • 배열(네이버 지식백과) • 일정한 규칙에 따라 몇몇 요소가 나열되어 있는 데이터 집합 • 배열은 차원을 가짐 • 행렬 • 행의 개수와 열의 개수라는 두 가지 속성을 추가로 갖는 벡터 • 행렬은 ‘배열’의 특이한 형태로, 2차원 배열이 곧 행렬 • 행렬은 벡터이므로 숫자형이나 문자형 같은 형식을 가짐
행렬의 생성 (1/2) • R에서 행렬의 내부 저장 공간은‘열 우선 배열column-major order’ 방식 • 행렬에 데이터를 저장 시, 1번 열, 2번 열 … 순으로 저장 • matrix() 함수: 행렬을 만드는 함수 • nrow, ncol인수: 행과 열의 수를 지정하는 인수 • 4개의 벡터에 대해 2*2행렬을 생성 • nrow와 ncol인수를 모두 지정할 필요는 없음
행렬의 생성 (2/2) • 행렬의 각 원소를 지정하는 경우 • 각 원소를 지정하기 전에 y가 행렬이며 행과 열의 수를 미리 정의해야 함 • 행 우선 배열 방식(입력 시에만 가능): byrow인수 사용
일반 행렬 연산 (1/4) • 선형대수 연산 • 행렬 간 곱, 행렬-상수 간 곱, 행렬 간 합 같은 선형 대수 연산이 가능
일반 행렬 연산 (2/4) • 행렬 인덱싱 • 행렬은 벡터이므로, 벡터와 유사하게 인덱싱이 가능 • 인덱스에 음수를 사용하여 특정 원소를 제외할 수 있음
일반 행렬 연산 (3/4) • 행렬 인덱싱 • 부분행렬에 값을 할당할 수 있음
일반 행렬 연산 (4/4) • 행렬 필터링
행과 열에 함수 적용 • *apply()군 함수: apply(), tapply(), lapply() 등 • 함수를 각 행이나 열에 적용하는 함수 • apply(m, dimcode, f, flags) • m은 행렬, f는 적용할 함수, flags는 f에 필요한 인수의 집합 • dimcode는 차원 수(1인 경우 함수를 행에, 2인 경우 열에 적용) • 위 코드는 행렬 m에서 각 열의 평균을 구할 경우
행과 열 추가 및 제거 • 행렬은 행이나 열을 추가 또는 삭제할 수 없음 • 행렬은 벡터이므로 고정된 길이와 차원을 가지고 있기 때문 • 따라서 벡터와 같이 ‘재할당’을 통해 추가/삭제한 효과를 기대해야 함 • rbind(), cbind() 함수 • 인수의 행렬들을 묶어서 행렬로 재할당하는 함수
벡터 및 행렬의 정확한 구분 • 행렬은 단순히 벡터지만 행과 열의 숫자라는 두 개의 추가적인 속성을 가짐 • 함수를 통해 차원 및 행과 열의 수를 확인할 수 있음
의도하지 않은 차원 축소 (1/2) • 차원 축소 • 통계에서 불필요한 차원을 제거하고, 핵심 데이터로 데이터를 간소화 • 행렬에서 연산할 때, 의도하지 않은 차원 축소가 발생할 수 있음 • 행렬 m에서 일부 데이터를 추출하였으나, 결과는 행렬이 아닌 벡터
의도하지 않은 차원 축소 (2/2) • R은 이런 차원 축소를 막을 수 있도록 drop 인수를 제공 • 행렬을 다루는 코드에는 drop=FALSE 인수를 습관적으로 사용하는 것이 용이 • 벡터를 행렬처럼 다루고 싶다면, as.matrix() 함수를 사용
행과 열에 이름 생성 • 행렬의 행과 열은 보통 인덱스 숫자로 통칭 • 특정 데이터 세터를 분석할 경우 이름을 부여하는 것이 유용하게 사용
고차원 배열 (1/2) • 2차원 구조의 배열인 행렬은 가장 빈번히 사용 • 경우에 따라 통계적 관점에서 고차원(3차원 이상) 배열이 요구 • e.g.) 3명의 학생이 국어, 영어 시험을 두 번씩 봤을 때의성적 데이터
고차원 배열 (2/2) • array() 함수: 배열을 생성하는 함수 • dim 인수를 통해 차원을 정의