Оператор Switch не распознается как переменная в r блестящем - PullRequest
0 голосов
/ 26 марта 2020

У меня есть selectInput для выбора разных фреймов данных с помощью оператора switch.

Мой набор данных "Players" выглядит следующим образом:

  Player Pos Age Team  G GS  MPG  FG FGA   FG%  3P 3PA   3P%  2P 2PA   2P%  eFG%  FT FTA   FT% ORB DRB TRB AST STL BLK
    1  Álex Abrines  SG  24  OKC 75  8 15.1 1.5 3.9 0.395 1.1 2.9 0.380 0.4 0.9 0.443 0.540 0.5 0.6 0.848 0.3 1.2 1.5 0.4 0.5 0.1
    2    Quincy Acy  PF  27  BRK 70  8 19.4 1.9 5.2 0.356 1.5 4.2 0.349 0.4 1.0 0.384 0.496 0.7 0.9 0.817 0.6 3.1 3.7 0.8 0.5 0.4
    3  Steven Adams   C  24  OKC 76 76 32.7 5.9 9.4 0.629 0.0 0.0 0.000 5.9 9.3 0.631 0.629 2.1 3.8 0.559 5.1 4.0 9.0 1.2 1.2 1.0
    4   Bam Adebayo   C  20  MIA 69 19 19.8 2.5 4.9 0.512 0.0 0.1 0.000 2.5 4.8 0.523 0.512 1.9 2.6 0.721 1.7 3.8 5.5 1.5 0.5 0.6
    5 Arron Afflalo  SG  32  ORL 53  3 12.9 1.2 3.1 0.401 0.5 1.3 0.386 0.7 1.7 0.413 0.485 0.4 0.5 0.846 0.1 1.2 1.2 0.6 0.1 0.2
    6  Cole Aldrich   C  29  MIN 21  0  2.3 0.2 0.7 0.333 0.0 0.0    NA 0.2 0.7 0.333 0.333 0.1 0.3 0.333 0.1 0.6 0.7 0.1 0.1 0.0

, а мой набор данных "groups" выглядит следующим образом:

                  Team  W  L  W/L%   GB  PS/G  PA/G  SRS Conference    Season
1     Toronto Raptors* (1) 59 23 0.720    — 111.7 103.9 7.29    Eastern 2017-2018
2      Boston Celtics* (2) 55 27 0.671  4.0 104.0 100.4 3.23    Eastern 2017-2018
3  Philadelphia 76ers* (3) 52 30 0.634  7.0 109.8 105.3 4.30    Eastern 2017-2018
4 Cleveland Cavaliers* (4) 50 32 0.610  9.0 110.9 109.9 0.59    Eastern 2017-2018
5      Indiana Pacers* (5) 48 34 0.585 11.0 105.6 104.2 1.18    Eastern 2017-2018
6          Miami Heat* (6) 44 38 0.537 15.0 103.4 102.9 0.15    Eastern 2017-2018

и моя функция переключения, которая выбирает Набор данных, основанный на моем selectInput, выглядит следующим образом:

leaderboardDatasetInput <- reactive({
 switch(
  input$leaderboard_dataset_input,
  "players" = d_season_combined,
  "teams" = d_team_regular_raw,
  "drafts" = d_draft
)})

Поскольку мой набор данных отличается, я хочу назначить другой столбец в качестве «базы» для построения моих данных. В моем наборе данных «игроков» в качестве «базового столбца» указан «Игрок», а в качестве базового столбца для моего набора «команд» - «Команда»:

leaderboardCharColumn <- reactive({
switch(
  leaderboardDatasetInput(),
  "players" = Player,
  "teams" = Team,
  "draft" = Player
)})

Я попытался получить доступ к значению из selectInput следующим образом :

 leaderboard <- reactive({
      datasetInput() %>%
      select(leaderboardCharColumn ())
  })

Однако возвращаемое значение не распознается как переменная из набора данных. Я получаю сообщение об ошибке:

EXPR must be a length 1 vector

Я также пытался использовать get ():

 leaderboard <- reactive({
      datasetInput() %>%
      select(get(leaderboardCharColumn ()))
  })

as.symbol ():

leaderboard <- reactive({
      datasetInput() %>%
      select(as.symbol(leaderboardCharColumn ()))
  })

! !!:

leaderboard <- reactive({
      datasetInput() %>%
      select(!!!leaderboardCharColumn ())
  })

А также передал операторы switch с '':

 leaderboardCharColumn <- reactive({
  switch(
   datasetInput(),
   "players" = 'Player',
   "teams" = 'Team',
   "draft" = 'Player'
)


 })

Но я все еще получаю ту же ошибку. Ваша помощь будет принята с благодарностью!

...