передача переменной в dplyr в виде строки - PullRequest
0 голосов
/ 01 ноября 2019

Я, должно быть, что-то упускаю при чтении виньетки программирования. Для этого примера:

library(dplyr)
library(entropy)

set.seed(122)
df <-data.frame(vec = sample(letters[1:20],100,replace = T),val = sample(1:10,100,replace = T))

df %>%
  group_by(vec) %>%
  filter(
    n()>4,
    entropy(table(val))>0
  )
# A tibble: 62 x 2
# Groups:   vec [8]
   vec     val
   <fct> <int>
 1 s        10
 2 s         8
 3 d         4
 4 a         2
 5 l         4
 6 m         4
 7 a         5
 8 a         9
 9 l         4
10 s         6
# ... with 52 more rows

Я хотел бы передать переменную-значение в виде строки, но здесь это не работает:

var_name="val"

df %>%
  group_by(vec) %>%
  filter(
    n()>4,
    entropy(table(!! var_name))>0
  )
# A tibble: 0 x 2
# Groups:   vec [1]
# ... with 2 variables: vec <fct>, val <int>

Чего мне не хватает?

1 Ответ

1 голос
/ 01 ноября 2019

Используйте !!sym(var_name) вот так:

df %>%
  group_by(vec) %>%
  filter(
    n()>4,
    entropy(table(!!sym(var_name)))>0
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...