0

我有一个 selectInput 来使用 switch 语句选择不同的数据帧。

我的“玩家”数据集如下所示:

  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

我的“团队”数据集如下所示:

                  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

我的 switch 函数根据我的 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'
)


 })

但我仍然得到同样的错误。您的帮助将不胜感激!

4

0 回答 0