R Language
벡터 만들기
수색…
숫자의 순서
:
연산자를 사용하여 코드의 큰 덩어리를 벡터화하는 데 사용되는 숫자 시퀀스를 만듭니다.
x <- 1:5
x
## [1] 1 2 3 4 5
이 두 가지 방법으로 작동합니다.
10:4
# [1] 10 9 8 7 6 5 4
심지어 부동 소수점 숫자
1.25:5
# [1] 1.25 2.25 3.25 4.25
또는 네거티브
-4:4
#[1] -4 -3 -2 -1 0 1 2 3 4
seq ()
seq
는 :
연산자가 1 이외의 단계를 지정할 수 있도록 허용하는 것보다 더 유연한 함수입니다.
이 함수는 start
(기본값은 1)부터 해당 번호를 포함하는 끝까지 시퀀스를 만듭니다.
끝 ( to
) 매개 변수 만 제공 할 수 있습니다.
seq(5)
# [1] 1 2 3 4 5
시작뿐만 아니라
seq(2, 5) # or seq(from=2, to=5)
# [1] 2 3 4 5
그리고 마침내 단계 ( by
)
seq(2, 5, 0.5) # or seq(from=2, to=5, by=0.5)
# [1] 2.0 2.5 3.0 3.5 4.0 4.5 5.0
seq
는 선택적으로 원하는 출력 길이 ( length.out
)가 제공 될 때 (균등하게 간격을 둔) 단계를 유추 할 수 있습니다
seq(2,5, length.out = 10)
# [1] 2.0 2.3 2.6 2.9 3.2 3.5 3.8 4.1 4.4 4.7 5.0
시퀀스가 다른 벡터와 같은 길이를 가져야한다면, along.with
를 length.out = length(x)
의 약자로 사용할 수 있습니다.
x = 1:8
seq(2,5,along.with = x)
# [1] 2.000000 2.428571 2.857143 3.285714 3.714286 4.142857 4.571429 5.000000
seq
패밀리에는 seq_along
, seq_len
및 seq.int
두 가지 유용한 함수가 있습니다. seq_along
및 seq_len
함수는 1에서 N까지 자연수 (계수)를 구성합니다. 여기서 N은 함수 인수, seq_along
이있는 벡터 또는 목록의 길이 및 seq_along
있는 정수 인수로 seq_len
됩니다.
seq_along(x)
# [1] 1 2 3 4 5 6 7 8
seq_along
은 기존 객체의 인덱스를 반환합니다.
# counting numbers 1 through 10
seq_len(10)
[1] 1 2 3 4 5 6 7 8 9 10
# indices of existing vector (or list) with seq_along
letters[1:10]
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
seq_along(letters[1:10])
[1] 1 2 3 4 5 6 7 8 9 10
seq.int
는 고대 호환성을 위해 유지 된 seq
와 같습니다.
또한 음수가 아닌 인수의 시퀀스 벡터를 만드는 이전 함수 sequence
가 있습니다.
sequence(4)
# [1] 1 2 3 4
sequence(c(3, 2))
# [1] 1 2 3 1 2
sequence(c(3, 2, 5))
# [1] 1 2 3 1 2 1 2 3 4 5
벡터
R의 벡터는 다른 유형 (예 : 정수, 논리, 문자)을 가질 수 있습니다. 벡터를 정의하는 가장 일반적인 방법은 function vector()
사용하는 것입니다.
vector('integer',2) # creates a vector of integers of size 2.
vector('character',2) # creates a vector of characters of size 2.
vector('logical',2) # creates a vector of logicals of size 2.
그러나 R에서는 속기 기능이 일반적으로 더 많이 사용됩니다.
integer(2) # is the same as vector('integer',2) and creates an integer vector with two elements
character(2) # is the same as vector('integer',2) and creates an character vector with two elements
logical(2) # is the same as vector('logical',2) and creates an logical vector with two elements
기본값 이외의 다른 값으로 벡터를 만들 수도 있습니다. 종종 함수 c()
가이를 위해 사용됩니다. c는 결합 또는 결합의 약자입니다.
c(1, 2) # creates a integer vector of two elements: 1 and 2.
c('a', 'b') # creates a character vector of two elements: a and b.
c(T,F) # creates a logical vector of two elements: TRUE and FALSE.
여기서 중요한 것은 R은 정수 (예 : 1)를 크기 1의 정수 벡터로 해석한다는 것입니다. 숫자 (예 : 1.1), 논리 (예 : T 또는 F) 또는 문자 (예 : 'a')도 마찬가지입니다. 따라서, 본질적으로 벡터를 결합하고, 다시 벡터입니다.
비슷한 벡터를 결합해야한다는 것에주의하십시오. 그렇지 않으면 R은 같은 유형의 벡터로 벡터를 변환하려고합니다.
c(1,1.1,'a',T) # all types (integer, numeric, character and logical) are converted to the 'lowest' type which is character.
벡터에서 요소를 찾는 작업은 [
연산자 (operator)]로 수행 할 수 있습니다.
vec_int <- c(1,2,3)
vec_char <- c('a','b','c')
vec_int[2] # accessing the second element will return 2
vec_char[2] # accessing the second element will return 'b'
이 값을 사용하여 값을 변경할 수도 있습니다.
vec_int[2] <- 5 # change the second value from 2 to 5
vec_int # returns [1] 1 5 3
마지막으로 :
연산자 ( seq()
함수의 약자)를 사용하여 숫자 벡터를 빠르게 만들 수 있습니다.
vec_int <- 1:10
vec_int # returns [1] 1 2 3 4 5 6 7 8 9 10
이것은 벡터를 서브 세트로 사용하기도합니다 (보다 쉬운 서브 세트에서 쉬운 서브 세트로)
vec_char <- c('a','b','c','d','e')
vec_char[2:4] # returns [1] "b" "c" "d"
vec_char[c(1,3,5)] # returns [1] "a" "c" "e"
명명 된 벡터 만들기
명명 된 벡터는 여러 가지 방법으로 만들 수 있습니다. c
:
xc <- c('a' = 5, 'b' = 6, 'c' = 7, 'd' = 8)
결과는 다음과 같습니다.
> xc
a b c d
5 6 7 8
list
:
xl <- list('a' = 5, 'b' = 6, 'c' = 7, 'd' = 8)
결과는 다음과 같습니다.
> xl
$a
[1] 5
$b
[1] 6
$c
[1] 7
$d
[1] 8
setNames
함수를 사용하면 같은 길이의 두 벡터를 사용하여 명명 된 벡터를 만들 수 있습니다.
x <- 5:8
y <- letters[1:4]
xy <- setNames(x, y)
명명 된 정수 벡터가 생성됩니다.
> xy
a b c d
5 6 7 8
보시다시피, 이것은 c
메소드와 동일한 결과를 제공합니다.
names
함수를 사용하여 동일한 결과를 얻을 수도 있습니다.
xy <- 5:8
names(xy) <- letters[1:4]
이와 같은 벡터를 사용하면 이름을 기준으로 요소를 선택할 수도 있습니다.
> xy["c"]
c
7
이 기능을 통해 명명 된 벡터를 조회 벡터 / 테이블로 사용하여 값을 데이터 프레임의 다른 벡터 나 열의 값과 일치시킬 수 있습니다. 다음 데이터 프레임을 고려하십시오.
mydf <- data.frame(let = c('c','a','b','d'))
> mydf
let
1 c
2 a
3 b
4 d
행에서 xy
의 올바른 값을 사용하여 num
이라는 mydf
데이터 프레임에 새 변수를 만들고 싶다고 가정 해 보겠습니다. match
함수를 사용하여 xy
의 적절한 값을 선택할 수 있습니다.
mydf$num <- xy[match(mydf$let, names(xy))]
결과는 다음과 같습니다.
> mydf
let num
1 c 7
2 a 5
3 b 6
4 d 8
rep () 함수를 사용하여 벡터 확장하기
rep
함수는 매우 유연한 방식으로 벡터를 반복하는 데 사용할 수 있습니다.
# repeat counting numbers, 1 through 5 twice
rep(1:5, 2)
[1] 1 2 3 4 5 1 2 3 4 5
# repeat vector with incomplete recycling
rep(1:5, 2, length.out=7)
[1] 1 2 3 4 5 1 2
각 인수는 관측 / 실험 유닛의 통계 벡터를 데이터 벡터의 벡터로 확장하는 데 특히 유용합니다. 이러한 유닛을 반복적으로 관찰 할 수 있습니다.
# same except repeat each integer next to each other
rep(1:5, each=2)
[1] 1 1 2 2 3 3 4 4 5 5
이러한 데이터 구조에 대한 확장과 관련된 rep
의 좋은 점은 length 인수를 벡터의 각 요소를 반복 할 횟수를 나타내는 벡터로 바꾸면 불균형 패널에 벡터를 확장 할 수 있다는 것입니다.
# automated length repetition
rep(1:5, 1:5)
[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
# hand-fed repetition length vector
rep(1:5, c(1,1,1,2,2))
[1] 1 2 3 4 4 5 5
이것은 데이터에 따라 확장되는 벡터를 동적으로 구성하기 위해 외부 함수가 rep
의 두 번째 인수를 공급할 수있는 가능성을 노출해야합니다.
seq
와 마찬가지로 rep
더 빠르고 간단한 버전은 rep_len
과 rep.int
입니다. 이것들은 rep
유지하는 몇 가지 속성을 떨어 뜨리므로 속도가 중요시되고 반복되는 벡터의 추가 측면이 불필요한 상황에서 가장 유용 할 수 있습니다.
# repeat counting numbers, 1 through 5 twice
rep.int(1:5, 2)
[1] 1 2 3 4 5 1 2 3 4 5
# repeat vector with incomplete recycling
rep_len(1:5, length.out=7)
[1] 1 2 3 4 5 1 2
빌드 상수의 벡터 : 문자 및 월 이름 시퀀스
R
에는 상수가 여러 개 있습니다. 다음 상수를 사용할 수 있습니다.
-
LETTERS
: 로마 알파벳의 26 대문자 -
letters
: 로마 알파벳의 26 개 소문자 -
month.abb
: 영어 월 이름에 대한 세 글자 약어 -
month.name
: 해당 달의 영어 이름 -
pi
: 원의 원주와 그 직경의 비율
문자 및 월 상수에서 벡터를 만들 수 있습니다.
1) 편지의 순서 :
> 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" "y" "z"
> LETTERS[7:9]
[1] "G" "H" "I"
> letters[c(1,5,3,2,4)]
[1] "a" "e" "c" "b" "d"
2) 월 약어 또는 월 이름 시퀀스 :
> month.abb
[1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
> month.name[1:4]
[1] "January" "February" "March" "April"
> month.abb[c(3,6,9,12)]
[1] "Mar" "Jun" "Sep" "Dec"