R 프로그래밍 언어에서 ~ (물결표) 사용


187

다음 명령에서 회귀 모델링에 대한 자습서를 보았습니다.

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

이 명령은 정확히 무엇 ~을하며 명령에서 (물결표) 의 역할은 무엇 입니까?


튜토리얼 링크를 공유 하시겠습니까? 흥미로운 것 같습니다.
cheesus

1
@cheeesus ... 사례 연구를 통해 R에서 ebook 데이터 마이닝을 겪고 있습니다 ... 그런 흥미로운 예를 더 많이 찾을 수 있습니다.
Ankita

답변:


193

권리에 대한 문제는 <-A는 formula객체입니다. 통계 모델을 나타내는 데 종종 사용되며, 왼쪽에있는 ~것은 반응이고 오른쪽에있는 ~것은 설명 변수입니다. 영어로 당신은 "종은 Sepal Length, Sepal Width, Petal Length 및 Petal Width에 의존합니다" 와 같은 것을 말할 것 입니다.

myFormula <-줄 의 일부는 수식을 객체에 저장 myFormula하므로 R 코드의 다른 부분에서 수식을 사용할 수 있습니다.


R에서 공식 객체의 다른 일반적인 용도

lattice패키지는 그들을 사용 플롯에 변수를 지정합니다 . 패키지는 그들을 사용하는 플로팅 패널을 지정합니다 . 패키지는 그들을 사용하는 비표준 evaulation .
ggplot2
dplyr


1
좀 더 광범위한 논의를 위해 : stackoverflow.com/questions/8055508/the-tilde-operator-in-r/…
IRTFM

의 '공식'섹션 lazyeval네트는 에 좋은 소개를 제공하는 공식은 무엇
RobinL

82

R은 ~수식에 사용하기위한 (물결표) 연산자를 정의합니다 . 수식에는 모든 종류의 용도가 있지만 가장 일반적인 회귀 분석입니다.

library(datasets)
lm( myFormula, data=iris)

help("~")또는 help("formula")더 많은 것을 가르쳐 줄 것입니다.

@Spacedman은 기본 사항을 다뤘습니다. 그것이 어떻게 작동하는지 논의 해 봅시다.

먼저 연산자이기 때문에 기본적 으로 함수에 대한 바로 가기입니다 (두 개의 인수 포함).

> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs

예를 들어 apply가족 명령 에 사용하는 데 도움이 될 수 있습니다 .

둘째, 수식 을 텍스트로 조작 할 수 있습니다 .

oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )

셋째, 목록으로 조작 할 수 있습니다 .

myFormula[[2]]
myFormula[[3]]

마지막으로 수식에 유용한 유용한 트릭이 있습니다 (자세한 내용 참조 help("formula")).

myFormula <- Species ~ . 

예를 들어, 위의 버전은 원래 버전과 동일합니다. 점은 "사용되지 않은 모든 변수"를 의미하기 때문입니다. 이것은 최종 모델 호출에 사용하는 data.frame을보고 data.frame에 존재하지만 수식에 명시 적으로 언급되지 않은 변수를 확인하고 점을 누락 된 변수로 바꿉니다.


@Ari B. Friedman의 답변에 감사하지만 마지막 줄은 'dot은 "아직 사용되지 않은 모든 변수"를 의미합니다. 더 설명 할 수 있다면.
Ankita

9
@Ankita,이 문맥에서 "아직 사용되지 않음"은 언급되지 않음을 의미합니다. 에서이 Species~.종은 사용 된 유일한 변수입니다. 따라서 data.frame의 다른 모든 변수에 따라 다릅니다.
x4nd3r

이해가 안됩니다 myFormula <- Species ~ . . 도트가 여전히 data.frame의 변수로 대체되는 경우 예를 들어 주
시겠습니까
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.