본문 바로가기
반응형

전체 글232

[R 코딩] 행렬의 고유값과 고유벡터 행렬은 벡터의 선형변환입니다. 벡터에 행렬을 곱하면, 크기와 방향이 달라집니다. 하지만 어떤 경우에는 방향이 아니라 크기만 달라지는 경우가 있습니다. 이때 아래와 같은 등식이 성립합니다. A는 행렬, x는 벡터, 람다는 상수입니다. $$A\vec{x}=\lambda \vec{x}$$ 이를 행렬 입장에서 생각해봅시다. 어떤 행렬 A가 있습니다. 이 행렬에 어떤 벡터를 곱하면 벡터의 크기와 방향이 달라집니다. 그런데 어떤 벡터는 이 행렬과 곱해져도 방향이 변하지 않고 크기만 변합니다. $$A\vec{x}=\lambda \vec{x}$$ 이 벡터를 행렬 A의 '고유벡터'라고 합니다. 이때 크기 변화에 대한 상수 λ 를 '고유값' 이라고 합니다. R에서 어떤 행렬의 고유값과 고유벡터를 구하는 함수는 eigen .. 2020. 12. 24.
R 업데이트, R스튜디오 업데이트, 패키지 업데이트, 패키지 옮기기 1. R 업데이트 install.packages("installr") library(installr) updateR() 2. R 스튜디오 업데이트 껐다 키면 됨. 3. R 버전 확인 version() 4. 라이브러리 옮기기 이전 버전에 있는 폴더들을 복붙하여 새버전폴더 안으로 옮기면 됩니다. 안쓰는 패키지를 정리할 겸 전부 지우도 필요한것을 하나씩 다시설치하는 것도 괜찮은 방법입니다. C:\Users\Username\Documents\R\win-library\이전버전 C:\Users\Username\Documents\R\win-library\새버전 5. 패키지 업데이트 update.packages(checkBuilt=TRUE) 6. 패키지 확인 packageStatus() 2020. 12. 23.
[R코딩] 행렬의 특잇값 분해 (svd) 행렬의 특잇값 분해는 아래와 같이 행렬 A를 U,D,V 세 행렬의 곱으로 나타내는 것입니다. (보통 D 대신 Σ 를 사용하는데, R 함수에서는 D를 사용합니다.) $A=UDV^{T}$ 특잇값 분해는 영어로 singular value decomposition 입니다. 줄어서 SVD 라고 부릅니다. R 함수 이름도 svd 입니다. singular value 를 한글로 옮긴 것이 '특잇값' 입니다. A,U,D,V 에 대한 설명은 아래와 같습니다. A : NxM 크기의 행렬 U : N차원 정방 직교 행렬 D : 대각행렬 V : M차원 정방 직교 행렬 아래는 R 예시입니다. > A=matrix(1:6,2) > A [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > svd(A) $d [1] 9.5.. 2020. 12. 22.
[R코딩] 한 벡터를 정렬 할 때, 그 순서로 다른 벡터 정렬하기 한 벡터를 크기 순으로 정렬할 때, 연관된 다른 벡터도 함께 정렬해야하는 경우 사용하는 방법입니다. 예를들어봅시다. X는 수학점수, Y는 사람이름이라고 합시다. X=c(62,82,95,51) Y=c("tim","marry","kate","bob") X를 내림차순으로 정렬할 때, Y도 X를 따라 정렬되게 하고 싶은 상황입니다. sort 함수에 index.return 옵션을 TRUE로 설정하면 아래 값이 반홥됩니다. > sx=sort(X,decreasing=TRUE,index.return=TRUE) > sx $x [1] 95 82 62 51 $ix [1] 3 2 1 4 ix는 기존의 index가 정렬 된 후 어느 위치에 오게되었는지를 알려줍니다. 이 index를 이용하여 두 함수를 정렬합시다. 우리가 의도한.. 2020. 12. 22.
[R코딩] 행렬을 이용한 연립방정식의 해 (solve) 아래와 같이 미지수가 3개인 연립방정식이 있다고 합시다. $$ a_{11}x+a_{12}y_+a_{13}z=b_{1}\\ a_{21}x+a_{22}y_+a_{23}z=b_{2}\\ a_{31}x+a_{32}y_+a_{33}z=b_{3} $$ 행렬형태로 바꾸면 아래와 같습니다. $$ \begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{bmatrix} \begin{bmatrix} x\\ y\\ z \end{bmatrix} = \begin{bmatrix} b_{1}\\ b_{2}\\ b_{3} \end{bmatrix} $$ 간단하게 아래와 같이 나타냅시다. $$[a]X=[b]$$ 이 .. 2020. 12. 21.
[R코딩] 행렬 열별 평균 구하기 (colMeans) R에서 행렬 열 별로 평균을 구하는 함수는 colMeans 입니다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 colMeans 함수를 이용하여 열별로 평균을 구해봅시다. > colMeans(m) [1] 2 5 8 11 2020. 12. 21.
[R코딩] 행렬 열 별로 합 구하기 (colsums) 행렬에서 열 별로 합을 구하는 함수는 colSums 입니다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 colSums 함수를 이용하여 열 별로 합을 구해봅시다. > colSums(m) [1] 6 15 24 33 2020. 12. 21.
[R코딩] 행렬의 행 별로 합 구하기 (rowSums) 행렬에서 행 별로 합을 구하는 함수는 rowSums 입니다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 rowSums 함수를 이용하여 행 별로 합을 구해봅시다. > rowSums(m) [1] 22 26 30 2020. 12. 21.
[R코딩] 행렬을 열 방향으로 연결 (cbind) R행서 행렬을 열 방향(좌->우)으로 연결할 때는 cbind함수를 사용합니다. 두 행렬이 열방향으로 연결되려면 두 행렬의 행의 크기가 같아야합니다. 두 행렬을 정의해봅시다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:4,2) > m2 [,1] [,2] [1,] 1 3 [2,] 2 4 cbind 함수를 이용하여 연결해봅시다. > cbind(m1,m2) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 1 3 [2,] 2 4 6 2 4 2020. 12. 21.
[R코딩] 행렬을 행 방향으로 연결 (rbind) 두 행렬을 행 방향(위->아래)으로 연결할 때는 rbind 함수를 사용합니다. 두 행렬을 정의해봅시다. 행 방향으로 연결하려면 두 행렬의 열의 크기가 같아야 합니다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:9,3) > m2 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 rbind 함수를 이용하여 연결해봅시다. > rbind(m1,m2) [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [3,] 1 4 7 [4,] 2 5 8 [5,] 3 6 9 2020. 12. 21.
[R코딩] 행렬의 곱 (%*%) R에서 행렬의 곱을 수행하는 함수는 %*% 입니다. 행렬을 하나 정의합시다. > m1=matrix(1:4,2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 m1과 m1을 곱하는 행렬의 곱을 해봅시다. > m1%*%m1 [,1] [,2] [1,] 7 15 [2,] 10 22 행렬과 행렬을 곱할 때는, 앞 행렬의 열의 수와 뒤 행렬의 행의 수가 같아야 합니다. 두 행렬을 정의합시다. m2 는 2행3열, m3는 3행3열의 행렬입니다. > m2=matrix(1:6,2) > m2 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m3=matrix(1:9,3) > m3 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 m2의 열의 수와 m3의 행.. 2020. 12. 21.
[R기초] 대각행렬을 생성하는 diag 함수 대각행렬은 대각선 방향을 제외한 나머지 값이 0인 행렬입니다. R에서는 diag 함수를 이용하여 생성합니다. diag(값,행의수,열의수) 예를들면 아래와 같습니다. > diag(1,4,4) [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 1 0 0 [3,] 0 0 1 0 [4,] 0 0 0 1 2020. 12. 20.
[R 코딩] 조합(nCr) 계산 R에서 조합을 계산하는 함수는 choose 입니다. 예를들어 조합 $_{n}C_{r}$ 은 아래와 같이 계산됩니다. $$_{n}C_{r}=\frac{n!}{\left ( n-r \right )!r!}$$ $_{5}C_{2}$ 를 R로 계산해봅시다. > choose(5,2) [1] 10 2020. 12. 20.
[R코딩] 벡터 A의 원소가 벡터B에 속하는지 확인 (is.element) is.element 함수는 두 벡터 A와 B가 있을 때, 벡터 A의 원소가 벡터 B에 속하는지 확인해주는 함수입니다. 아래와 같이 사용합니다. > A=c(1,2,3) > B=c(2,4,6,8,10) > is.element(A,B) [1] FALSE TRUE FALSE 2020. 12. 20.
[R코딩] 차집합 (setdiff) setdiff 함수는 두 벡터를 집합으로 인식하여 차집합을 구해줍니다. 집합이기 때문에 중복되는 원소는 하나만 남겨집니다. > A=c(1,2,3,4,5,5) > B=c(1,1,2,4,4) > setdiff(A,B) [1] 3 5 2020. 12. 20.
[R기초] 교집합 함수 (intersect) intersect 함수는 두 벡터를 집합으로 인식하여 교집합을 구해줍니다. 집합이기 때문에 중복되는 원소는 하나만 남겨집니다. > A=c(1,2,3,4,5,5) > B=c(1,1,2,4,4) > intersect(A,B) [1] 1 2 4 2020. 12. 20.
[R기초] 합집합 함수 (union) union 함수는 두 벡터를 집합으로 인식하여 합집합을 구해줍니다. 집합이기 때문에 중복되는 원소는 하나만 남겨집니다. > A=c(1,2,3,3) > B=c(3,4,4,5) > union(A,B) [1] 1 2 3 4 5 2020. 12. 20.
[R기초] 매칭된 원소를 찾는 match 함수 아래와 같은 두 벡터가 있습니다. A=c(20,40,100) B=c(10,20,30,40,50,60) A에 들어있는 원소가 B에 있는지 확인해봅시다. 20 -> B의 두번째 자리 40 -> B의 네번째 자리 100 -> B에 없음 위와 같은 연산을 하는 함수가 있습니다. match 함수입니다. 사용해봅시다. > A=c(20,40,100) > B=c(10,20,30,40,50,60) > match(A,B) [1] 2 4 NA 2020. 12. 20.
[R기초] 누적최댓값 (cummax) R에서 누적최댓값을 구하는 함수는 cummax 입니다. 예를들어 c(1,3,2,5,4) 이라는 벡터가 있을 때, 누적된 최댓값은 아래와 같이 구합니다. > cummax(c(1,3,2,5,4)) [1] 1 3 3 5 5 2020. 12. 20.
[R기초] 누적최솟값 (cummin) R에서 누적최솟값을 구하는 함수는 cummin 입니다. 예를들어 c(5,4,5,3,1) 이라는 벡터가 있을 때, 누적된 최솟값은 아래와 같이 구합니다. > cummin(c(5,4,5,10,1)) [1] 5 4 4 4 1 2020. 12. 20.
[R기초] 누적곱 (cumprod) R에서 누적곱을 계산해주는 함수는 cumprod 입니다. 원소의 누적된 곱을 결과로 출력해줍니다. 아래와 같이 사용합니다. > cumprod(c(1,2,3,4,5)) [1] 1 2 6 24 120 2020. 12. 20.
[R 기초] 누적합 (cumsum) R에서 누적합을 계산해주는 함수는 cumsum 입니다. 원소의 누적된 합을 결과로 출력해줍니다. 아래와 같이 사용합니다. > cumsum(c(1,2,3,4,5)) [1] 1 3 6 10 15 2020. 12. 20.
[R 기초] 절댓값 함수 (abs) R에서 절댓값을 구하는 함수는 abs입니다. 예를들어 $\left| -2\right|$ 는 아래와 같습니다. > abs(-2) [1] 2 2020. 12. 20.
[R 기초] 제곱근 함수 (sqrt) R의 제곱근 함수는 sqrt 입니다. 예를들어 $\sqrt{2}$ 는 아래와 같습니다 . > sqrt(2) [1] 1.414214 아래와 같이 제곱 기호를 이용하여 계산할 수도 있습니다. > 2^(1/2) [1] 1.414214 2020. 12. 20.
[R코딩] 지수함수 (exp) 지수함수는 $e^{x}$ 를 의미합니다. R의 지수함수는 exp입니다. 예를들어 $e^{5}$ 를 R에서 코드로 구현하면 아래와 같습니다. > exp(5) [1] 148.4132 2020. 12. 20.
[R코딩] 로그, 상용로그, 자연로그 함수 (log) 자연로그 R에서 제공하는 로그함수 log 의 디폴트는 자연로그입니다. 자연로그는 밑이 e인 로그입니다. > log(exp(1)) [1] 1 상용로그 상용로그는 밑이 10인 로그입니다. log함수에 아래와 같이 base 옵션에 10을 입력합니다. > log(2,base=10) [1] 0.30103 로그 원하는 수를 밑으로 설정할 수 있습니다. 예를들어 밑이 2인 로그는 base 옵션에 2를 입력하면 됩니다. > log(4,base=2) [1] 2 2020. 12. 20.
[R 코딩] 전치행렬 구하는 함수 (t) R에서 전치행렬을 구할 때는 t 함수를 사용합니다. 행렬을 하나 정의합시다. > m=matrix(1:4,2) > m [,1] [,2] [1,] 1 3 [2,] 2 4 전치행렬을 구해봅시다. > t(m) [,1] [,2] [1,] 1 2 [2,] 3 4 2020. 12. 18.
[R 코딩] 역행렬 구하는 함수 (solve) R에서 역행렬을 구할 때는 solve 함수를 사용합니다. 행렬을 하나 정의합시다. > m=matrix(1:4,2) > m [,1] [,2] [1,] 1 3 [2,] 2 4 역행렬을 구해봅시다. > m_inv=solve(m) > m_inv [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 역행렬이 맞는지 확인합시다. 둘을 곱하여 단위행렬이 나오면 됩니다. > m_inv=solve(m) > m_inv [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 2020. 12. 18.
[R 코딩] 모든 원소가 0인 행렬 만들기 파이썬 넘파이나 매트랩의 zeros 와 같은 역할입니다. R에서 행렬을 정의할 때, 벡터가 들어가는 자리에 0을 넣으면 됩니다. 3행 5열의 zeros 행렬을 만들어봅시다. > matrix(0,3,5) [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 [2,] 0 0 0 0 0 [3,] 0 0 0 0 0 2020. 12. 18.
[R 코딩] 리스트에서 특정 조건으로 요소 제거하기 리스트에서 특정 조건으로 요소를 제거하는 방법입니다. 예를들어 "문자열"만 제거한다던가, NA 요소를 제거하는 것입니다. discard 함수 안에 is 함수를 사용하면 됩니다. 리스트를 하나 정의해봅시다. > li=list(1,"a",2,"b",NA) > li [[1]] [1] 1 [[2]] [1] "a" [[3]] [1] 2 [[4]] [1] "b" [[5]] [1] NA 문자열만 제거해보겠습니다. > discard(li,is.character) [[1]] [1] 1 [[2]] [1] 2 [[3]] [1] NA 숫자를 제거할 때는 is.numeric, NA를 제거할 때는 is.na 를 대신 넣으면 됩니다. 2020. 12. 18.
반응형