본문 바로가기
my_lesson/_R_컴퓨팅

R_컴퓨팅 - 데이터의 구조[1] 벡터

by boolean 2019. 2. 10.
728x90

R_컴퓨팅 - 데이터의 구조

벡터의 입력

>#Vector    #동일한 유형의 데이터로 구성되어 있는 1차원 데이터 구조
>V1 <- c(1, 2, 3)    # 숫자형
>V2 <- c("Hello", "R")    #문자형
>V3 <- c(TRUE, FALSE)    #논리형
>V1
[1] 1 2 3
>V2
[1] "Hello" "R"
>V3
[1] TRUE FALSE


>scan(sep=",")
1:1, 2, 3
4:4, 5,
6:
read 5 items
[1] 1 2 3 4 5 NA

>seq(from = 1, to = 6, by = 1)    #1부터 6까지 1씩 증가 옵션의 위치가 바뀌어도 상관 없음
[1] 1 2 3 4 5 6
>seq(1, 6, 1)    #옵션이 생략되었을 경우 from to by 순서가 default 임
# length->나누는 단계(원소의 갯수) ,  along=1:5 ->1단계부터 5번 실행
>seq(from=1, to=10, length=3) 
[1] 1.0 5.5 10.0
>seq(from=1, by=0.05, along=1:5)
[1] 1.00 1.05 1.10 1.15 1.20
>seq(from=1, to=5, along=1:6
[1] 1.0 1.8 2.6 3.4 4.2 5.0

>rep(c(1, 2), times=2)    # 1과 2로 구성된 벡터 전체를 2회 반복하라
[1] 1 2 1 2
>rep(1:2, times=2)
[1] 1 2 1 2
>rep(c(1, 2), times=c(2, 1))    # 첫번째원소는 2번 두번째 원소는 1번 원소별로 반복하라
[1] 1 1 2
>rep(c(1, 2), each=2)    # 모든 원소를 원소별로 2회 반복하라
[1] 1 1 2 2
>rep(c(1, 2, 3), length=5)    # 벡터 전체를 반복하는데 반복된 벡터의 크기는 5로 제한한다.
[1] 1 2 3 1 2

[ ] 를 이용하여 벡터의 일부 원소를 추출
>벡터명[원소번호 또는 조건명]
Exam:
11에서 20까지의 값을 갖는 벡터 v1을 생성하고 세번째와 다섯번째 값을 추출하라
v1의 원소중 15보드 큰 값만 출력하라
v1의 원소중 두번째와 네번째 값만을 삭제하고 출력해보자
Solution:
>v1 <- c(11:20)
>v1[c(3,5)]
>v1[v1>15]
>remove <- v1[c(2, 4)]
>setdiff(v1, remove)

-replac()함수를 이용하여 일부 자료를 대체
>replace(벡터명, 원소번호, 교체자료)
Exam:
1에서 5까지의 값을 갖는 벡터 v2를 생성하고 두번째 값을 6으로 변경하라
v2의 다섯번째 값 다음에 8을 추가 한 벡터  v3를 생성하라
Solution:
>v2 = c(1:5)
>replace(v2, 2, 6)
>v3 <- append(v2, 8, after=5)

-append()함수를 이용하여 조건에 따를 위치에 자료를 삽입
>append(벡터, 삽입자료, after=원소번호)
-sort() 함수를 이용하여 자료를 정렬
>sort(벡터, decreasing=FALSE, ...)
-rank() 함수를 이용하여 자료의 순위를 출력
>rank(벡터, na.last = TRUE, ties.method=c("average", "first", "random", "max", "min"))
-order  함수를 이용하여 오름차순에 의한 자료의 위치 값 출력
>order(벡터, na.last = TRUE, decreasing=FALSE)
Exam:
1을 세번 반복한뒤 1에서 5까지 2만큼의 증가분의 수열을 생성하여 덧붙인다.
이어서 rev() 함수를 이용해 1에서 5까지 이르는 크기 3인 벡터의 역순을 구해 연결하고 
2를 세번 반복한 벡터를 덧붙인다.
위의 결과로 나온 벡터 x를 오름차순으로 정렬하라
벡터 x의 자료의 순위를 출력하라
벡터 x의 오름차순에 의한 자료의 위치값을 출력하라

Solution:
>v1 <- rep(1, times=3)
>v2 <- seq(1, 5, 2)
>v3 <- append(v1, v2, after=length(v1))
>v4 <- seq(from=1, to=5, length=3)
>v5 <- append(v3, rev(v4), after=length(v3))
>v6 <- append(v5, rep(2, times=3), after=length(v5))
# 위의 내용을 한줄로 표현하면
>x <- c(rep(1, 3), seq(1, 5, 2), rev(seq(1, 5, length=3)), rep(2, 3))
[1] 1 1 1 1 3 5 5 3 1 2 2 2
>sort(x)
>rank(x)
>order(x)



댓글