R에서 "."(도트)의 의미는 무엇입니까?


39

난 그냥 "R in Nutshell"책을 읽고 있습니다. 그리고 "."부분을 건너 뛴 것처럼 보입니다. "sample.formula"에서와 같이 설명했다.

> sample.formula <- as.formula(y~x1+x2)

다른 언어와 같이 필드 수식이있는 객체입니까? 그렇다면 어떻게이 객체가 가지고있는 다른 필드 / 기능을 어떻게 알 수 있습니까? (타입 선언)

편집 : 방금 "."의 또 다른 혼란스러운 사용을 발견했습니다.

> svm(formula = is_spam~., data = spambase.training)

(~., 사이의 점)


y=β0

12
.spambase.trainingis_spamy=β0y ~ 1

소스를 미리 확인하지 않았습니다. 정정 주셔서 감사합니다!
Christopher Aden

@caracal (+1) 와우이 방법을 궁금해하고있었습니다. 감사!
토머스 레빈

답변:


30

점은 일반 이름과 같이 사용할 수 있습니다. 그러나 추가적인 특수 해석이 있습니다. 특정 클래스의 객체가 있다고 가정하십시오.

 a <- list(b=1)
 class(a) <- "myclass"

이제 myfunction다음과 같은 방법으로 표준 제네릭으로 선언 하십시오.

 myfunction <- function(x,...) UseMethod("myfunction")

이제 함수를 선언하십시오

 myfunction.myclass <- function(x,...) x$b+1

그런 다음 점은 특별한 의미가 있습니다. 클래스 myclass호출이있는 모든 객체

 myfunction(a)

실제로 함수를 호출합니다 myfunction.myclass:

 > myfunction(a)
  [1] 2

이것은 R에서 널리 사용되며 가장 적합한 예는 function summary입니다. 각 클래스에는 고유 한 summary기능이 있으므로 예를 들어 특정 클래스의 객체를 반환하는 모델과 같은 일부 모델을 적합하게 만들면 호출해야 summary하며 해당 특정 모델에 적절한 요약 함수를 호출합니다.


이 답변이 질문에 전혀 응답하지 않기 때문에 받아 들여지고 크게 찬란하게 놀랐습니다! 그것은 줄임표 ... (세 개의 다른 것의 순서가 아닌 단일 렉서 임)를 "점"으로 지칭하는 반면, 문제 는 수식과 이름에서 완전히 다른 방식으로 사용되는 . 을 분명히 의미합니다. 체이스의 대답.
whuber

3
나는 줄임표를 언급하지 않습니다. 점이 S3 메서드 디스패치에 사용된다고 설명하려고했습니다. 일반 함수에는 일반적으로 타원이 있으므로 사용했습니다. 코드에서 제거되면 답변이 변경되지 않습니다. 질문 본문을 다시 읽은 후에 다른 답변을 제공하기 때문에 편집하기 전에 답변을했다고 추측 할 수 있습니다.
mpiktas 2016 년

1
설명 감사합니다. "..."가 두 번 등장한 것으로 "도트"라고 믿었다 고 잘못 생각한 것 같습니다.
whuber

12

관련 비트는 다음 ?formula과 관련 하여 도움말 페이지를보십시오 ..

에 대한 두 가지 특별한 해석이 있습니다. 수식에서. 일반적으로 모델 피팅 함수의 데이터 인수와 관련하여 '수식에 포함되지 않은 모든 열'을 의미합니다. terms.formula를 참조하십시오. update.formula의 맥락에서만 '이전에 공식의이 부분에 있었던 것'을 의미합니다.

또는 패키지 reshapereshape2패키지는 ( .와) ...조금 다르게 사용합니다 ?cast.

몇 가지 특수 변수가 있습니다. "..."은 수식에 사용되지 않은 다른 모든 변수와 "."를 나타냅니다. 변수가 없음을 나타냅니다


5

일부 예외 (S3 메소드 디스패치)가 있지만 일반적으로 가독성 보조 수단으로 사용되므로 특별한 의미가 없습니다.


2
나는 반대의 말을 할 것입니다-그것은 특별한 의미가 있습니다 (S3 디스패치) 당신이 언급 한 일부 오래된 명명 규칙은 S3 제네릭이 아닌 함수 이름에 .. 그것은 기능 이름과 관련이 있습니다. (기능이없는) 객체의 이름에 대해서는 특별한 의미가 없습니다.
복원 모니카

이름의 시작 부분에서 a .는 객체를 보이지 않게 만듭니다 ls().
스라소니

2

sample.formula 의 점은 시각적 이외의 다른 샘플formula 와 분리하지 않습니다 . 변수 이름 일뿐입니다. R 변수 이름은 한 가지 예외를 제외하고 영숫자와 점 (.) 및 밑줄 (_)로 구성 될 수 있습니다. 실제 규칙은 다음과 같습니다.

" 구문 상 유효한 이름은 문자, 숫자 및 점 또는 밑줄 문자로 구성되며 문자 나 숫자로 시작하지 않는 점으로 시작합니다.".2way "와 같은 이름은 유효하지 않으며 예약어도 아닙니다. "

두 번째 경우 (즉, is_spam ~. 의 경우 )는 다르며 위에서 설명했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.