ADP (R)

[R] {.->>aa} 이것이 뭐지?

멋쟁이천재사자 2022. 9. 3. 10:34

dplyr 의 파이프(%>%) 연산자 다음에 와있는 {.->>xx} 도무지 무슨 기호일까요.

{} 도 어렵고 . 도 어렵고 ->> 도 어렵습니다. 그래서 연구를 조금 해보았습니다.

 

1. ->> 와 <<- 는 같은 기능을 하는군요

 

아래와 같이 작성해서 aa bb 를 찍어보니 같은 값이 들어가 있네요.

같은 기능으로 보입니다.

 

iris %>% head() %>% 
  {.->>aa} %>% 
  .$Species %>% 
  table()

 

iris %>% head() %>% 
  {bb <<- .} %>% 
  .$Species %>% 
  table()

 

2. 쩜(.) 은 또 무엇인가요

다른 거 빼고 달랑 쩜만 찍어보았습니다.

 

> iris %>% head() %>% .

Error in .(.) : could not find function "."

 

%>% 다음에는 함수(function)가 와야하는데 "." 은 함수가 아니야~ 라는 의미로 이해되네요

 

 

3. {.} {} 둘 다 비슷해보이는데

달랑 "." 만 사용하는 경우 에러가 나서 괄호로 묶어주었습니다. 오류가 안나고 전체 데이터 출력이 됩니다.

그런데 {} 만 해보아도 에러 없이 동일한 결과가 나옵니다. ?? 이게 뭘까요

 

 

# 전체 칼럼 표시
iris %>% head() %>% {.}

 

4. <<- 사용법 Reference

<<- 은 특별한 할당 연산자라고 합니다.

 

The special assignment operator, <<-, is used to change the value associated with total. This operator looks back in enclosing environments for an environment that contains the symbol total and when it finds such an environment it replaces the value, in that environment, with the value of right hand side. If the global or top-level environment is reached without finding the symbol total then that variable is created and assigned to there. For most users <<- creates a global variable and assigns the value of the right hand side to it. Only when <<- has been used in a function that was returned as the value of another function will the special behavior described here occur.

open.account <- function(total) {
  list(
    deposit = function(amount) {
      if(amount <= 0)
        stop("Deposits must be positive!\n")
      total <<- total + amount
      cat(amount, "deposited.  Your balance is", total, "\n\n")
    },
    withdraw = function(amount) {
      if(amount > total)
        stop("You don't have that much money!\n")
      total <<- total - amount
      cat(amount, "withdrawn.  Your balance is", total, "\n\n")
    },
    balance = function() {
      cat("Your balance is", total, "\n\n")
    }
  )
}

ross <- open.account(100)
robert <- open.account(200)

ross$withdraw(30)
ross$balance()
robert$balance()

ross$deposit(50)
ross$balance()
ross$withdraw(500)

출처 : https://cran.r-project.org/doc/manuals/R-intro.html

 

'ADP (R)' 카테고리의 다른 글

[R] x is not a factor 오류 해결  (0) 2022.09.14
R document 에 없는 매개변수? (plot 함수의 hang)  (0) 2022.09.03
ungroup  (0) 2022.09.03
부호 검정의 유효 표본수  (0) 2022.08.29
T통계량 계산식  (0) 2022.08.28