xlab - R 할당 연산자는 무엇입니까?=for?




xlab size in r (2)

(참고 : 이것은 원래의 질문에 대한 직접적인 대답이 아닙니다. 나는 평판이 충분하지 않아 아래의 정보가 유용하다고 생각하기 때문에 대답으로 남겨 둡니다. 이렇게하는 더 좋은 방법!)

:= as = 또는 <- 직접 사용할 수는 없지만 := 연산자는 dplyrdata.table 과 같은 비표준 평가 (NSE)를 사용하는 도메인 특정 언어 (DSL)로 프로그래밍 할 때 매우 유용합니다. 아래는 그 예입니다 :

library(dplyr)
df <- tibble(
  g1 = c(1, 1, 2, 2, 2),
  g2 = c(1, 2, 1, 2, 1),
  a = sample(5),
  b = sample(5)
)

my_mutate <- function(df, expr) {
  expr <- enquo(expr)
  mean_name <- paste0("mean_", quo_name(expr))
  sum_name <- paste0("sum_", quo_name(expr))

  mutate(df,
    !! mean_name := mean(!! expr),
    !! sum_name := sum(!! expr)
  )
}

my_mutate(df, a)
#> # A tibble: 5 x 6
#>      g1    g2     a     b mean_a sum_a
#>   <dbl> <dbl> <int> <int>  <dbl> <int>
#> 1    1.    1.     1     3     3.    15
#> 2    1.    2.     4     2     3.    15
#> 3    2.    1.     2     1     3.    15
#> 4    2.    2.     5     4     3.    15
#> # ... with 1 more row

위의 예제에서 my_mutate 함수 내에서 := my_mutate 작동하지 않습니다 !! mean_name = mean(!! expr) !! mean_name = mean(!! expr) 은 유효한 R 코드가 아닙니다.

dplyr 하여 NSE 및 프로그래밍에 대한 자세한 내용을 볼 수 here . dplyr 함수를 사용하여 함수를 작성할 때 NSE를 처리하는 방법을 설명하는 훌륭한 작업을 수행합니다. 위의 예는 웹 사이트에서 직접 복사 한 것입니다.

R 소스 코드 (파일 R-3.2.2/src/main/gram.y 2836 에서 2852) 행까지 2852)R-3.2.2/src/main/gram.y R 파서 / 토큰 LEFT_ASSIGNMENT:= 고려한다는 것을 LEFT_ASSIGNMENT :=LEFT_ASSIGNMENT 토큰입니다.

그러나 R.3.2.2 에서 할당 연산자로 사용하려고 할 때,
나는 오류를 가지고있다 ( := for ... := ) 함수를 찾을 수는 없지만 R은 그것을 <- :

> myVar := 42
Erreur : impossible de trouver la fonction ":="
> :=
Erreur : unexpected assignment in ":="
> <-
Erreur : unexpected assignment in "<-"

버그입니까, 아니면 token := tokenizer 소스 코드에서 제거해야합니까?

에 대한 과거 이야기가 있습니까 := R에 연산자 := ?


명확히하기 위해 R 대입 연산자는 <-= 입니다.

그들에 대한 정보를 얻으려면 다음을 입력하십시오 :

 ?`<-` 

명령 줄에 <- 대신. 또한 부모 환경에서 변수에 영향을주는 연산자 <<- 있습니다.

관련 := ,이 연산자는 data.table 패키지의 j 연산자입니다. 이 data.tabledata.table 객체로만 사용 가능하며 읽기 전용 defined as 할 수 있습니다. 이를 설명하기 위해 첫 번째 열의 값이 1 일 때 두 번째 열을 b 수정합니다 (값이 b col2 정의).

library(data.table)

dt = data.table(col1=c(1,2,1,2,3), col2 = letters[1:5])

dt[col1==1,col2:='b']

세부 설명 :

?`:=`

희망을 명확히합니다.





colon-equals