$ 연산자는 R의 원자 벡터 오류에 대해 유효하지 않습니다.
R은 벡터의 요소를 추출할 수 있는 다양한 방법을 제공합니다. 이 기사에서는 이러한 목적을 위한 기본 R의 기능에 대해 설명합니다.
주목해야 할 중요한 점은 R의 추출 연산자 중 하나인 $
가 벡터에 대해 작동하지 않는다는 것입니다. 이것으로 시작한 다음 사용 가능한 다양한 옵션을 확인합니다.
$ 연산자는 원자 벡터에 유효하지 않습니다
R의 오류
$
연산자는 데이터 프레임의 명명된 열 또는 목록의 명명된 요소를 추출하는 데 사용할 수 있지만 벡터에서는 작동하지 않습니다. R은 오류를 발생시킵니다.
$
연산자에는 숫자 인덱스가 아닌 이름이 필요합니다. 따라서 요소의 이름이 지정된 벡터를 만들 것입니다.
예제 코드:
# Create a vector using c(). Assign names for its elements.
vr1 = c(a = "alpha", d = "delta", r = "rho", s = "sigma")
vr1
# Try to extract the second element.
vr1$d
출력:
> vr1$d
Error in vr1$d : $ operator is invalid for atomic vectors
R은 $
연산자가 원자 벡터에 유효하지 않다고 알려줍니다.
숫자 또는 문자열의 벡터는 모든 요소가 동일한 유형이고 요소로 다른 벡터를 가질 수 없기 때문에 원자성이라고 합니다.
우리의 예에서와 같은 원자 벡터의 경우 R의 다른 기능을 사용하여 요소를 추출해야 합니다.
R의 []
및 [[]]
연산자
[]
및 [[]]
연산자를 사용하여 벡터의 요소를 추출할 수 있습니다.
[]
및[[]]
는 위치 인덱스 또는 이름을 사용할 수 있습니다.[]
는 여러 요소를 추출할 수 있는 반면[[]]
는 하나의 요소만 추출할 수 있습니다.[[]]
는 이름을 삭제하고[]
는 요소를 추출할 때 이름을 유지합니다.
예제 코드:
# Use [] with index number or name to extract a single element.
vr1[2]
vr1['d']
# Use [[]] with the index number of the name to extract a single element.
vr1[[2]]
vr1[['d']]
# Use [] to extract multiple elements. Use indices or names.
vr1[c(2,4)]
vr1[c('d', 's')]
출력:
> # Use [] with index number or name to extract a single element.
> vr1[2]
d
"delta"
> vr1['d']
d
"delta"
> # Use [[]] with index number of name to extract a single element.
> vr1[[2]]
[1] "delta"
> vr1[['d']]
[1] "delta"
> # Use [] to extract multiple elements. Use indices or names.
> vr1[c(2,4)]
d s
"delta" "sigma"
> vr1[c('d', 's')]
d s
"delta" "sigma"
getElement()
함수 사용
추출 연산자 외에도 R은 벡터에서 요소를 추출하는 getElement()
함수도 제공합니다.
getElement()
는 exact = TRUE
옵션이 있는 [[]]
연산자와 유사합니다.
- 이름이나 색인을 사용하여 하나의 요소만 선택할 수 있습니다.
- 이름이 삭제됩니다.
예제 코드:
getElement(vr1, 'd')
getElement(vr1, 2)
출력:
> getElement(vr1, 'd')
[1] "delta"
> getElement(vr1, 2)
[1] "delta"
벡터를 데이터 프레임으로 변환하고 $
연산자 사용
$
연산자를 사용하여 벡터에서 요소를 추출하려면 먼저 벡터를 데이터 프레임으로 변환해야 합니다.
예제 코드:
dfr1 = as.data.frame(vr1)
dfr1
출력:
> dfr1 = as.data.frame(vr1)
> dfr1
vr1
a alpha
d delta
r rho
s sigma
하나의 열과 네 개의 행이 있는 데이터 프레임이 있습니다. 벡터의 이름이 열 이름이 되었습니다. 요소 이름이 행 이름이 되었습니다.
원래 벡터의 요소를 추출하려면 원하는 행 및 열 이름을 지정해야 합니다. 모든 열의 행 이름을 지정할 수도 있습니다.
예제 코드:
# Use names for row and column.
dfr1['d','vr1']
# Only name the row, and select all columns.
dfr1['d',]
출력:
> # Use names for row and column.
> dfr1['d','vr1']
[1] "delta"
> # Only name the row and select all columns.
> dfr1['d',]
[1] "delta"