Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Sqoop
- tomcat
- Java
- Express
- SSL
- JavaScript
- SPC
- NPM
- GIT
- Eclipse
- hadoop
- Android
- vaadin
- 공정능력
- MSSQL
- Python
- 보조정렬
- plugin
- SQL
- Kotlin
- react
- es6
- xPlatform
- mapreduce
- R
- window
- Spring
- mybatis
- table
- IntelliJ
Archives
- Today
- Total
DBILITY
R data type array (행렬) 본문
반응형
행렬은 matrix 함수를 통해 생성한다. 사용법은 matrix( data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL ) 형태로,
data에는 벡터, nrow는 행의 수, ncol는 열의 수, byrow 는 행우선채우기, dimnames는 list타입으로 행과 열에 사용할 이름을 입력(rownames,colnames로도 가능)한다.
행렬원소 접근은 인덱스 또는 dimnames에서 입력한 행,열이름의 조합으로 가능하다.
> matrix(c(1:6), nrow = 2, ncol = 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(c(1:6),2,3,byrow = TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
> matrix(c(1:6),2,3,byrow = TRUE,dimnames = list(c('row1','row2'),c('col1','col2','col3')))
col1 col2 col3
row1 1 2 3
row2 4 5 6
>
> x<-matrix(c(1:6),2,3,byrow = TRUE,dimnames = list(c('row1','row2'),c('col1','col2','col3')))
> x
col1 col2 col3
row1 1 2 3
row2 4 5 6
> x[1,1]
[1] 1
> x['row1','col1']
[1] 1
> rownames(x)
[1] "row1" "row2"
> colnames(x)
[1] "col1" "col2" "col3"
> length(x)
[1] 6
> nrow(x)
[1] 2
> NROW(x)
[1] 2
> rownames(x)<-rownames(c(1,2), do.NULL = FALSE, prefix = "R")
> x
col1 col2 col3
R1 1 2 3
R2 4 5 6
> colnames(x)<-rownames(c(1,2,3), do.NULL = FALSE, prefix = "C")
> x
C1 C2 C3
R1 1 2 3
R2 4 5 6
> y<-matrix(c(1:6),nrow = 2,ncol = 3)
> y
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> rownames(y)
NULL
> rownames(y)<-c("r1","r2")
> y
[,1] [,2] [,3]
r1 1 3 5
r2 2 4 6
> colnames(y)
NULL
> colnames(y)<-c("c1","c2","c3")
> y
c1 c2 c3
r1 1 3 5
r2 2 4 6
> colnames(y)
[1] "c1" "c2" "c3"
> rownames(y)
[1] "r1" "r2"
> y
c1 c2 c3
r1 1 3 5
r2 2 4 6
> y[1,1]
[1] 1
> y[1,2]
[1] 3
> y[1:2,]
c1 c2 c3
r1 1 3 5
r2 2 4 6
> y[,2:3]
c2 c3
r1 3 5
r2 4 6
> y[,-3]
c1 c2
r1 1 3
r2 2 4
> y[-2,-3]
c1 c2
1 3
> y[,c(1,3)]
c1 c3
r1 1 5
r2 2 6
> y['r1',]
c1 c2 c3
1 3 5
행렬의 4칙연산은 기본적으로 원소간 연산이 이루어 진다.
> x<-matrix(seq(1,6), nrow = 2)
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x*2
[,1] [,2] [,3]
[1,] 2 6 10
[2,] 4 8 12
> x+3
[,1] [,2] [,3]
[1,] 4 6 8
[2,] 5 7 9
> x+x
[,1] [,2] [,3]
[1,] 2 6 10
[2,] 4 8 12
> x/2
[,1] [,2] [,3]
[1,] 0.5 1.5 2.5
[2,] 1.0 2.0 3.0
> x*x
[,1] [,2] [,3]
[1,] 1 9 25
[2,] 4 16 36
요소의 곱셈이 아닌 행렬의 곱셉을 하기 위해서는 앞행렬의 열의 수와 뒤 행렬의 행의 수가 동일해야 한다.
같은 행렬의 곱셈이 필요할때 t()함수를 사용하여 pivot을 행한 후 곱셈할 수 있다.
※ t()함수(transpose)는 전치행렬(pivot ->행을 열로), solve()함수는 역행렬이다.
갑자기 빨간책 수학의 정석이 떠오르고, 선형대수를 배운적이 있었나 생각이 든다. 안 배운거 같은데...
> x%*%t(x)
[,1] [,2]
[1,] 35 44
[2,] 44 56
2*2행렬의 역행렬 공식은 다음과 같다.
> x<-matrix(1:4,ncol = 2)
> x
[,1] [,2]
[1,] 1 3
[2,] 2 4
> solve(x)
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
dim()함수는 인자로 주어진 행렬의 차원을 나타낸다.
c()함수로 차원을 입력시 차원이 변경된다.
> x<-matrix(1:6,ncol = 2)
> x
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> dim(x)<-c(2,3)
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> dim(x)
[1] 2 3
반응형
'statistics > R' 카테고리의 다른 글
R arithmetic operation and deal with NA (Not Assign-missing data) (0) | 2018.11.23 |
---|---|
R control statements ( 제어문 ) (0) | 2018.11.23 |
R type casting ( 데이터 형 변환 ) (0) | 2018.11.23 |
R data type array, dataframe (배열, 데이터프레임) (0) | 2018.11.22 |
R data type vector, factor, list ( 벡터, 팩터, 리스트 ) (0) | 2018.11.19 |
Comments