openlang

R은 연속된 산술 기호를 어떻게 처리하나요

실수로 R 코드에 +를 하나 더 넣었는데 아무 불평도 하지 않더군요.

좀 더 시험해 보니 여러 연산자가 이어질 때 R이 꽤 특이하게 동작했어요.

왜 그런지, 어떤 순서로 연산하는지 설명해 주실 수 있나요?


6 + 2
#> [1] 8

6 +++ 2
#> [1] 8

6 --- 2
#> [1] 4

6 +-+ 2
#> [1] 4

6 -+- 2
#> [1] 8
영어에서 번역원문 보기

이어지는 대화 2

서로의 근거를 따라
  1. 고유 링크
    
    lobstr::ast(6 +++ 2)
    #█─`+` 
    #├─6 
    #└─█─`+` 
    #  └─█─`+` 
    #    └─2

    첫 연산자 뒤의 연산자는 모두 단항으로 해석돼요. 함수 호출로 쓰면 +(6, +(+(2)))와 같아요.

    영어에서 번역원문 보기
  2. 고유 링크

    R에서 +/-는 단항과 이항 연산자로 모두 쓰이며 단항의 우선순위가 높아요. 그래서 첫 기호가 실제 이항 연산이고, 나머지 기호는 오른쪽 숫자에 적용되는 중첩 단항 +/- 연산이에요. 단항 +는 값을 그대로 두고 단항 -는 매번 부호를 뒤집어요.

    따라서 6 +++ 2는 6 + (+(+2)) = 8이고, 6 --- 2는 6 - (-(-2)) = 4예요. 나머지 두 경우도 같으니 첫 연산자 뒤에 오는 마이너스 개수를 세면 돼요(짝수면 양수, 홀수면 음수).

    영어에서 번역원문 보기

같은 질문의 다른 갈래

  1. 현재 시각을 초 단위 타임스탬프로 얻으려면?

    Dyalog APL의 ⎕TS 함수로 현재 연도, 월, 일, 시, 분, 초 등을 얻을 수 있는데, 예를 들어 1970-01-01 이후의 초를 세는 타임스탬프 (Unix 타임스탬프)를 얻을 수 있나요?

    답글 2최근 활동 apl
  2. Swift - 정수를 양수로 바꾸기

    정수를 절댓값으로 바꾸는 방법이 있나요? 예를 들면 UInt()를 이미 시도해 봤어요. Int를 부호 없는 값으로 바꿔 줄 거라 생각했는데 되지 않았어요.

    답글 4최근 활동 swift
  3. 상관관계 차트가 잘 안 그려져요

    안녕하세요 여러분, Performance Analytics 패키지의 chart.Correlation 함수가 iris 데이터에서 왜 실패하는지 설명해 주실 분 있나요, lapply와 is.numeric으로 숫자형 iris 버전…

    답글 3최근 활동 r