안녕하세요, 이번 포스팅에서는 with, within, which 함수에 대하여 알아보도록 하겠습니다.
with 함수와 within 함수는 꼭 필요한 기능은 아니지만, 코딩을 할 때 코드의 행을 줄일 수 있습니다.
코딩을 할 때에, 코드를 한눈에 볼 수 있도록 하는것은 오류나는 부분을 찾기에도 쉽고, 외형적으로도 좋게 보이는 효과가 있습니다.
그리고 which 함수는 내가 찾고자 하는 데이터가 있을 때, 그 데이터에 대한 힌트를 주면 위치를 알려주는 함수입니다.
그럼 이제 본격적으로 3가지 함수에 대해 실습해보도록 하겠습니다.
① with
with |
with(data, expression) |
with 함수는 데이터 프레임 또는 리스트 내 필드를 필드 이름만으로 접근할 수 있게 해주는 함수입니다. 쉬운 이해를 위해 예제를 살펴보도록 하겠습니다.
with(iris, {
print(mean(Sepal.Length))
print(mean(Sepal.Width))
})
[1] 5.843333
[1] 3.057333
위의 예시를 보시면, with 함수에 iris를 데이터 인자로 넣으면, 뒤에 data 인자를 필요로 하는 mean 함수에서 iris를 입력하지 않고, 행이름 만으로도 결과가 출력되는 것을 확인하실 수 있습니다.
② within
within |
within(data, expression) |
within 함수는 표현식에서 보시다시피 with 함수와 매우 유사합니다. 차이점으로는 with함수의 기능에 더해서 데이터를 수정하는 기능까지 제공합니다. within 함수 또한 쉬운 이해를 위해 예시를 보도록 하겠습니다.
eng <- data.frame(name = c("Lee", "Choi", "Park", "You"), eng = c(93,73,83,73))
math <- data.frame(name = c("You", "Kawk", "Lee", "Park"), math = c(89,79,69,99))
score <- merge(eng, math, by = 'name', all = T)
name eng math
1 Choi 73 NA
2 Lee 93 69
3 Park 83 99
4 You 73 89
5 Kawk NA 79
scoreTmp <- within(score, {
eng = ifelse(is.na(eng), median(eng, na.rm = T), eng)
})
name eng math
1 Choi 73 NA
2 Lee 93 69
3 Park 83 99
4 You 73 89
5 Kawk 78 79
위의 예시를 보시면, merge 함수를 통해 두 개의 데이터프레임을 합칠 때, all=T 에 의해 NA값이 생성됩니다.
이 때 within 함수를 통해 score의 열이름만 입력하여도, 함수가 실행이 되고, 데이터의 변경이 적용되는 것을 확인할 수 있습니다.
merge 함수에 대한 설명은 아래를 통해 보실 수 있습니다.
2019/05/29 - [데이터 다루기/Base of R] - R에서의 데이터 프레임 다루기 (2)
③ which
which |
which(x, arr.ind = FALSE) |
which 함수는 원하고자 하는 x의 인덱스를 찾아주는 함수입니다. arr.ind 인자는 x가 행렬이거나 array일 때, which함수를 그대로 쓰면 위치가 출력되는데, 이 때 arr.ind = TRUE로 바꿔주면, 위치가 출력됩니다. 쉬운 이해를 위해 예시를 보도록 하겠습니다.
wch <- c(2,12,5,8,10)
which(wch > 5)
[1] 2 4 5
wch[which(wch > 5)]
[1] 12 8 10
m <- matrix(1:12, 3, 4)
which(m %% 3 == 0)
[1] 3 6 9 12
which(m %% 3 == 0, arr.ind = TRUE)
row col
[1,] 3 1
[2,] 3 2
[3,] 3 3
[4,] 3 4
위의 예시를 보시면, which 함수를 통해 5보다 큰 수의 위치인 2,4,5 가 출력되었으며, 위치를 받아드임으로써, 값을 출력하게 할 수 있습니다. 또한 행렬에 대하여 which 함수를 사용하면, 값이 바로 출력되는데, 이는 arr.ind = TRUE를 통해 위치 출력으로 바꿀 수 있음을 확인할 수 있습니다.
'데이터 다루기 > Base of R' 카테고리의 다른 글
[R] 패키지 설치하기 (0) | 2019.08.15 |
---|---|
[R] grep, grepl, gsub, strsplit, substr 함수 (문자열 다루기) (0) | 2019.05.30 |
[R] apply 함수 (0) | 2019.05.30 |
R에서의 데이터 프레임 다루기 (2) (0) | 2019.05.29 |
R에서의 데이터 프레임 다루기 (1) (0) | 2019.05.29 |