[R 스튜디오] 벡터
1. 벡터
-벡터는 한 개 이상의 원소를 구성한 자료 구조
-R 의 자료 객체 중 가장 기본이 되는 자료 개체
-하나의 벡터 원소는 한 가지 형태(mode) 만 가능
- c() scan() seq() rep() 함수로 생성 가능
1.1c()
c(1,2,3,4,5)
c(1:5)
*세미콜론 ; 은 여러 명령을 한번에 실행할 때 쓰이고, 그냥 콜론은 일종의 수열 연산
x <- 10; y <- 20; z <- x + y; print(z) >> 30이 출력
*c() 함수 안에는 문자형 벡터도 만들 수 있어! 다만 이때는 각 원소에 "" 를 넣어줘야해
a<-c("a","b","c","d","e")
*벡터의 길이, 즉 원소의 갯수를 세는 함수는 length()
*c() 함수를 이용하여 논리형 벡터도 생성 가능
c(F,F,T)
*위에서 하나의 벡터에 하나의 데이터 형식만 사용되는 것처럼 데이터 형식이 혼용되어 쓰이진 않음
2.seq() 함수
seq(3,9,2)
3부터 시작해서 9까지 2를 간격으로!
seq(from=3,to=9,by=2) ...이 함수 결과랑 같은 결과고, 각 옵션의 순서는 바뀌어도 무방
q<-seq(from =3 ,to = 9 ,length = 2)
q(3,15)
length 는 원소의 갯수를 나타내니까, 3에서 9까지의 숫자를 총 2개가 되도록 만드는 것
q<-seq(from =5,to = 100 ,length =20)
q
5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100
seq(from=5,by=100,along=1:10)
5부터 시작되어서 100 씩 커지고, 그걸 1 ~ 100 번 반복
seq(from=5,by=100,along=5:10) 로 하면
5 105 205 305 405 505
seq(from = 1 , to= 10 ,along = 1:5)
1부터 시작되어서 10까지 5개로 배분해서
1.00 3.25 5.50 7.75 10.00
3.rep()
rep(a,times=b) > a 를 b 만큼 반복!
rep(c(1,2),times=2)
1 2 1 2
rep(1:2,times=2)
1 2 1 2
rep(c(2,4),times = c(2,1)) times = c(a,b) 앞의 원소는 2회, 뒤의 원소는 1회 반복
2 2 4
rep(c(2,4,5), times = c(2,1,3))
2 2 4 5 5 5
rep(c(2,4) , each=2) 앞 뒤 원소 모두 2회 반복
2 2 4 4
rep(c(2,4,8), length =5 ) 2 4 8 로 구성된 벡터를 반복하되 생성되는 벡터 크기를 5로 한정
2 4 8 2 4
<벡터의 편집>
c() scan() seq() rep() 등으로 생성된 벡터는 추가로 가공할 수도 있음
[ ] : 벡터의 일부 원소 추출 ---벡터이름 [원소번호 또는 조건문 , ...]
replace : 일부 자료 대체 ---replace(벡터,원소 번호, 교체자료)
append : 조건에 따른 위치에 자료 삽입 ---sort(벡터 , decreasing = FALSE, ...)
sort : 자료 정렬 ---sort(벡터,decreasing = FALSE, ...)
rank : 자료의 순위 출력 ----rank (벡터 , na.last = TRUE ,ties.methond = c("average" , "first","random","max","min"))
order : 오름차순에 의한 자료의 위치값 출력 ---order(벡터,na.last = TRUE, decreasing =FALSE)
<옵션>
1. na.last = TRUE 만약 결측치가 존재하면 가장 맨 끝에 위치하는 것으로 간주
2. decreasing =FALSE 기본 옵션이 내림차순이 아니라 오름차순
1. [ ]로 특정 순서의 원소 추출
v1<-c(11:20)
v1
v1[c(3,5)]
v1 에 있는 3번쨰, 5번쨰 추출
11 12 13 14 15 16 ,,,,20
-v1 벡터 안에서 15 보다 큰 값 추출
v1[v1>15]
16 17 18 19 20
-특정 순서의 원소를 제거하고 출력
v1 [c(-2,-4)] >> 12 랑 14가 빠짐
11 13 15 16 17 18 19 20
2. replace()
v2<-c(1:5)
v2
replace(v2,2,6)
결과: 1 6 3 4 5
3. append()
append(a,b,after=x)
a 라는 벡터에서 x 번쨰 뒤의 숫자에 b 추가
3을 세번 반복하고 3에서 7까지 2만큼의 증가분으로 수열을 생성하고
이어서 rev() 함수를 이용해 3애소 7까지 이르는 크기 3인 벡터의 역순을 구해 연결한 뒤 4를 세번 반복한 벡터
x<-c(rep(3,3),seq(3,7,2),rev(seq(from=3,to=7,length=3)),repx(4,3))
x
3 3 3 3 5 7 7 5 3 4 4 4
sort(x)
3 3 3 3 3 4 4 4 5 5 7 7
rank(x)
1 2 3 4 5 | 6 7 8 | 9 10 | 11 12
3 5개에 대한 중심 순위값 3.0
4 3개에 대한 중심 순위값 7.0
6 2개에 대한 중심 순위값 (9+10)/2 9.5
7 2개에 대한 중심 순위값 (11+12)/2 11.5
3.0 3.0 3.0 3.0 9.5 11.5 11.5 9.5 3.0 7.0 7.0 7.0
order (x)
1 2 3 4 9 10 11 12 5 8 6 7
*rank() 는 sort () 처리한 후의 랭킹 순위라면
order 는 오름차순 상관 없이 그 벡트 원래의 오름차순 순서임 !!