2017-11-20 12 views
1

하나의 열 (질문)이 동적 인 두 열 (var 1 및 question)에서 개수를 사용하려고합니다. 아래 코드는 변수 이름에 공백이 포함되지 않은 경우 작동하지만 공백을 포함하므로 오류가 있습니다.R dplyr 동적 열 선택

Error in parse(text = x) : <text>:1:5: unexpected numeric constant 
1: var 1 

나는이 문제를 해결할 수있는 방법이 있나요 :

df <- data.frame(`var 1` = c('a','b'), 
       `var 2` = c('a','b'), 
       `var 3` = c('a','b'), 
       `var 4` = c('a','b') 

) 

question <- 'var 3' 

dfDynamic <- df %>% count_(vars = c('var 1', question)) 

내가 오류는 다음과 같습니다?

답변

0

동적 열 이름 지정을 처리하는 공식 인 "quasiquotation"을 사용하여 수정할 수 있습니다.

예 :

df <- data.frame(`var 1` = c('a','b'), 
       `var 2` = c('a','b'), 
       `var 3` = c('a','b'), 
       `var 4` = c('a','b') 

) 

# Does not work: 
question <- 'var 3' 
dfDynamic <- df %>% count_(vars = c('var 1', question)) 


# Try this instead: 

# "quote" the column name -In dplyr lingo, create a "quosure" 
question <- quo('var 3') 

# Notice that you don't need to use "count_" anymore, 
# just invoke the quoted column name with "!!" 
dfDynamic <- df %>% count('var 1', !!question) 


dfDynamic 

당신은 얻을 것이다 : http://dplyr.tidyverse.org/articles/programming.html

: 여기
# A tibble: 1 x 3 
    `"var 1"` `"var 3"`  n 
     <chr>  <chr> <int> 
1  var 1  var 3  2 

도 quasiquotation 뒤에 논리를 설명하고 더 많은 예제와 튜토리얼입니다