2017-12-12 13 views
2

다음 코드는 홍채 데이터 세트의 행에서 표준 편차를 계산합니다.R 벡터 요소 선택 구문 dplyr 활용

위의 코드에서 열 선택 구문을 감쌀 수 없습니다. 내가 열 선택이 다음과 같은 방식으로 일을 생각했다 R 학습 :

첫 번째 코드 블록의 '.'으로 무엇
library(dplyr) 
iris[, 1:4] 

? 이 유형의 구문을 사용하는 열 선택의 다른 기본 예가 있습니까? %> % 파이프는 파이프 뒤의 모든 명령에 대해 설정된 홍채 데이터로 간주합니다. 그런데 구문이 왜 바뀌 었습니까?

첫 번째 코드 블록의 열 선택 [(1:4)]','이 누락되어 있으며 대괄호 [] 대신 괄호 ()으로 묶여 있습니다.

답변

2

iris[1:4]iris[,1:4]은 모두 열을 부분 집합하는 올바른 방법입니다. 예 :

> iris[1:4] %>% head() 
    Sepal.Length Sepal.Width Petal.Length Petal.Width 
1   5.1   3.5   1.4   0.2 
2   4.9   3.0   1.4   0.2 
3   4.7   3.2   1.3   0.2 
4   4.6   3.1   1.5   0.2 
5   5.0   3.6   1.4   0.2 
6   5.4   3.9   1.7   0.4 

> iris[,1:4] %>% head() 
    Sepal.Length Sepal.Width Petal.Length Petal.Width 
1   5.1   3.5   1.4   0.2 
2   4.9   3.0   1.4   0.2 
3   4.7   3.2   1.3   0.2 
4   4.6   3.1   1.5   0.2 
5   5.0   3.6   1.4   0.2 
6   5.4   3.9   1.7   0.4 

()이 경우 아무 것도 수행하지 않습니다. 의 apply(.[(1:4)], 1, sd)은 "파이프 앞의 출력을이 위치로 옮깁니다"라는 파이핑 구문입니다. 따라서이 경우 irismutate (기본값)의 첫 번째 인수 인 에서 .[(1:4)]까지 파이프됩니다.이 값은 iris[(1:4)]입니다. 다음은 동일한 출력을 제공합니다.

> iris %>% mutate(stDev = apply(.[1:4], 1, sd)) %>% head 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species stDev 
1   5.1   3.5   1.4   0.2 setosa 2.179449 
2   4.9   3.0   1.4   0.2 setosa 2.036950 
3   4.7   3.2   1.3   0.2 setosa 1.997498 
4   4.6   3.1   1.5   0.2 setosa 1.912241 
5   5.0   3.6   1.4   0.2 setosa 2.156386 
6   5.4   3.9   1.7   0.4 setosa 2.230844 

> iris %>% mutate(stDev = apply(iris[1:4], 1, sd)) %>% head 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species stDev 
1   5.1   3.5   1.4   0.2 setosa 2.179449 
2   4.9   3.0   1.4   0.2 setosa 2.036950 
3   4.7   3.2   1.3   0.2 setosa 1.997498 
4   4.6   3.1   1.5   0.2 setosa 1.912241 
5   5.0   3.6   1.4   0.2 setosa 2.156386 
6   5.4   3.9   1.7   0.4 setosa 2.230844