cran : https://cran.r-project.org/
- 다운 받고 util 폴더에 넣어놓자
- 다음으로 쭉 진행해서 설치
- 폰트 사이즈 등 변경
- 커스텀 할 수 있다.
- 버전 관리
- 작업 디렉토리(작업공간은 아니다.) 세팅해주고 apply, ok
- 새로운 프로젝트 생성
- 이게 생겨야한다.
- 프로젝트 환경세팅
- UTF-8로 세팅
- getwd() : 현재 작업 위치 확인
- ctrl + s로 저장하면 R확장자로 저장된다.
- R은 직관적이다.
- 코드를 치고 ctrl + Enter 하면 consol창에 바로 나온다.
x = 1 # x에 1을 대입
x <- 1 # x에 1을 대입
1 -> x # x에 1을 대입
X <<- 1 # x에 1을 대입
1 ->> x # x에 1을 대입
+ 덧셈
- 뺄셈, 음수부호
* 곱셈
/ 나누기
%/% 몫
%% 나머지
^, ** 지수연산(제곱)
== 같다
!= 갖지 않다.
< 미만
> 초과
& 논리(AND)
| 논리 OR)
! 논리부정(
%in% 일치 여부 검사(match)
# 벡터
c(1,2,3)
c(1,2,3,"a")
> # 벡터
> c(1,2,3)
[1] 1 2 3
> c(1,2,3,"a")
[1] "1" "2" "3" "a"
>
# 이름 있는 벡터
c(A = 100)
c("A" = 100)
vec = c("A"=100, "B"=200, "C"=300)
> # 이름 있는 벡터
> c(A = 100)
A
100
> c("A" = 100)
A
100
> vec = c("A"=100, "B"=200, "C"=300)
>
# R은 1부터 시작한다.
vec[1]
vec[1:2]
vec[3]
vec[c(1,2)]
> # R은 1부터 시작한다.
> vec[1]
A
100
> vec[1:2]
A B
100 200
> vec[3]
C
300
> vec[c(1,2)]
A B
100 200
>
# 첫번째, 세번째 요소 출력
vec[c(1,3)]
> # 첫번째, 세번째 요소 출력
> vec[c(1,3)]
A C
100 300
>
# 재할당
vec[2] = 'kkk'
vec
vec1 = c(3,4,5)
vec2 = c(8,9)
vec_concat = c(vec1, vec2)
vec_concat
> # 재할당
> vec[2] = 'kkk'
> vec
A B C
"100" "kkk" "300"
>
> vec1 = c(3,4,5)
> vec2 = c(8,9)
> vec_concat = c(vec1, vec2)
> vec_concat
[1] 3 4 5 8 9
>
>
# names
# 1차원 벡터의 각 원소에 할당된 원소의 이름을 확인 또는 변경
vec_new = c("A"=22, "B"=33)
vec_new
names(vec_new)
names(vec_new)[1]
names(vec_new)[c(1:2)]
names(vec_new)[1:2]
names(vec_new)[2] = "user"
vec_new
> # names
> # 1차원 벡터의 각 원소에 할당된 원소의 이름을 확인 또는 변경
> vec_new = c("A"=22, "B"=33)
> vec_new
A B
22 33
>
> names(vec_new)
[1] "A" "B"
> names(vec_new)[1]
[1] "A"
> names(vec_new)[c(1:2)]
[1] "A" "B"
> names(vec_new)[1:2]
[1] "A" "B"
> names(vec_new)[2] = "user"
> vec_new
A user
22 33
>
# seq : from과 to로 시작과 끝을 지정하고, by로 숫자 증분을 지정한다.
?seq()
seq(1,4)
seq(1,4,1)
seq(from=1, to=4, by=1)
seq(from=1, to=4, by=0.5)
> # seq : from과 to로 시작과 끝을 지정하고, by로 숫자 증분을 지정한다.
> ?seq()
> seq(1,4)
[1] 1 2 3 4
> seq(1,4,1)
[1] 1 2 3 4
> seq(from=1, to=4, by=1)
[1] 1 2 3 4
> seq(from=1, to=4, by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0
>
# rep() : 1차원 벡터를 지정한 규칙 기반으로 복제
rep(2:4,2)
rep(x=2:4,times=2)
> # rep() : 1차원 벡터를 지정한 규칙 기반으로 복제
> rep(2:4,2)
[1] 2 3 4 2 3 4
> rep(x=2:4,times=2)
[1] 2 3 4 2 3 4
>
rep(2,2:4)
# 인자명까지 같이 전달하면 순서가 바뀌어도 문제없다.
rep(times=2, x=2:4)
> #rep(2,2:4)
> # 인자명까지 같이 전달하면 순서가 바뀌어도 문제없다.
> rep(times=2, x=2:4)
[1] 2 3 4 2 3 4
>
# length : 길이확인
length(c(4,5,8))
length(c('a','b'))
> # length : 길이확인
> length(c(4,5,8))
[1] 3
> length(c('a','b'))
[1] 2
>
letters
letters[1:4]
LETTERS
LETTERS[2:5]
> letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x"
[25] "y" "z"
> letters[1:4]
[1] "a" "b" "c" "d"
> LETTERS
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X"
[25] "Y" "Z"
> LETTERS[2:5]
[1] "B" "C" "D" "E"
>
# unique : 객체의 중복된 원소를 제거하여 고유한 원소를 남긴다.
vec_dup = c(1,1,3,5,5,6)
length(vec_dup)
unique(vec_dup)
length(vec_dup)
length(unique(vec_dup))
> # unique : 객체의 중복된 원소를 제거하여 고유한 원소를 남긴다.
> vec_dup = c(1,1,3,5,5,6)
> length(vec_dup)
[1] 6
> unique(vec_dup)
[1] 1 3 5 6
> length(vec_dup)
[1] 6
> length(unique(vec_dup))
[1] 4
# :
3:5
1:4
c(1,2,3,4)
3:-3
1.5:4
> # :
> 3:5
[1] 3 4 5
> 1:4
[1] 1 2 3 4
> c(1,2,3,4)
[1] 1 2 3 4
> 3:-3
[1] 3 2 1 0 -1 -2 -3
> 1.5:4
[1] 1.5 2.5 3.5
>