install.packages("Deriv")
library(Deriv)Updating HTML index of packages in '.Library'
Making 'packages.html' ...
done
R의 필수적이고 기초적인 문법들을 한번에 싹 어셈블리해보자.~(그렇게 거창하게는 아니고…)~
Updating HTML index of packages in '.Library'
Making 'packages.html' ...
done
- 원래 응당 헬로우 월드부터 하는 게 옳기는 하나… ~우리 그럴 레벨 아니잖아요?~그래도 해보자!
- rm(list = ls())R-studio등에서 실습하고 있다면, environment탭의 Data가 전부 깔끔하게 비워지는 것을 볼 수 있다…
- 연산- 벡터, 리스트, 배열가장 기본적인 데이터 저장 방식이다. 이쪽이 어떻게 보면 다른 언어에서의 리스트와 가깝다.
사실상 딕셔너리라고 봐도 무방하다. 원소로 key와 value를 넣을 수 있고, 그 안에 또 key와 value를 넣는 등의 작업이 가능하다. value에는 어떠한 형태든 다 들어갈 수 있다.
대괄호로 리스트를 지정하는 것은 불가능하다. 대괄호는 인덱싱에서만 사용할 수 있다…
호출은 대괄호
[]나, 달러표시$를 이용하면 된다. 대괄호를 하나 더 넣어서 호출하면 내부 값만을 호출한다.
파이썬에선 배열이나 행렬을 구현하기 위해서 따로 라이브러리를 들여오거나 함수를 구축해야만 했다. 하지만 R에선 자체적으로 행렬을 구현해놨다.
| a | b | c | |
|---|---|---|---|
| 1 | 1 | 3 | 5 |
| 2 | 2 | 4 | 6 |
데이터 프레임마냥 행과 열에 이름도 붙일 수 있다.(사실상 데이터프레임이나 다름없긴 함)
- 변환함수, 생성(?)함수수학적 변환이나 통계적 변환, 또는 벡터 등을 생성하는 함수들을 알아보자.
먼저 아래와 같은 벡터가 있다고 하면…
mean(x) ## 평균
sd(x) ## 표준편차
var(x) ## 분산
max(x) ## 최댓값
median(x) ## 중간값
min(x) ## 최솟값
length(x) ## 길이최빈값은 모듈로 없다.
- 행렬과 데이터프레임| 1 | 4 | 7 |
| 2 | 5 | 8 |
| 3 | 6 | 9 |
벡터 데이터를 가져와서 행이나 열의 갯수를 정해주면 행렬이 나온다.
A <- matrix(c(1,7,3,8,9,11,2,3,21), nrow = 3, byrow = TRUE)
dim(A) ## 차원
nrow(A) ## 행의 갯수
ncol(A) ## 열의 갯수
diag(A) ## 대각원소, 역으로 대각행렬을 산출할 수도 있음.| 1 | 8 | 2 |
| 7 | 9 | 3 |
| 3 | 11 | 21 |
| -0.183962264 | 0.16273585 | -0.05896226 |
| 0.172169811 | -0.01768868 | -0.01533019 |
| -0.007075472 | -0.01297170 | 0.05542453 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
| 1 | 7 | 3 | -0.183962264 | 0.16273585 | -0.05896226 |
| 8 | 9 | 11 | 0.172169811 | -0.01768868 | -0.01533019 |
| 2 | 3 | 21 | -0.007075472 | -0.01297170 | 0.05542453 |
| 1.000000000 | 7.00000000 | 3.00000000 |
| 8.000000000 | 9.00000000 | 11.00000000 |
| 2.000000000 | 3.00000000 | 21.00000000 |
| -0.183962264 | 0.16273585 | -0.05896226 |
| 0.172169811 | -0.01768868 | -0.01533019 |
| -0.007075472 | -0.01297170 | 0.05542453 |
- 분포분포마다 파라미터는 조금씩 다르지만, 함수의 이름이 지어지는 원리는 동일하다.
rnorm(n = 1, mean = 0, sd = 1) ## 표준정규분포
rt(n = 1, df = 8) ## t분포
runif(n = 1, min = 0, max = 1) ## 균일분포
rchisq(n = 1, df = 50) ## 카이제곱분포
rf(n = 1, df1 = 5, df2 = 20) ## f분포
rbinom(n = 10, size = 5, prob = 0.5) ## 이항분포
rpois(n = 1, lambda = 5) ## 포아송분포
rexp(n = 1, rate = 5) ## 지수분포
rgamma(n = 1, shape = 1, rate = 5) ## 감마분포(사실상 지수분포)
## 등등...기본적으로 좌측 면적부터 취급하므로, lower.tail옵션을 FALSE로 택해 우측 면적을 기준으로 구할 수 있다.
- 로직기본적으로 논리연산자를 이용한다.
which()함수를 이용하여 조건에 맞는 슬라이싱을 할 수 있다.
- 조건문