r语言 - 如何摆脱"var1"并将"var2"重命名为"变量?



我目前正在制作显示所选变量摘要的RShiny项目。然而,我无法摆脱这个&;var1&;并且不能重命名"var2"。我该怎么办?我是这个领域的新手。TIA。

这是我的代码:

# Define UI
ui <- fluidPage(theme = shinytheme("cerulean"),
navbarPage(
# theme = "cerulean",  # <--- To use a theme, uncomment this
"My first app",
tabPanel("Navbar 1",
sidebarPanel(
selectInput(inputId="option",
label="",
c("CHILDREN","FHEAD","FEMALE","ELDERLY","FAMILYSIZE","NOELECTRIC","LOWEDU","GROWTH","POVERTY","ILLITERATE",
"NOTRAINING","DPRONE","RENTED","TAPWATER","NOSEWER","POPULATION"),
selected="CHILDREN"),


), # sidebarPanel
mainPanel(
tableOutput("table")
) # mainPanel

), # Navbar 1, tabPanel
tabPanel("Navbar 2", "This panel is intentionally left blank"),
tabPanel("Navbar 3", "This panel is intentionally left blank")

) # navbarPage
) # fluidPage

# Define server function  
server <- function(input, output) {

sum <- reactive({
data <- data %>%
select(input$option) %>%
summary() %>%
as.data.frame() %>%
tidyr::separate(Freq, c("Stat", "Value"), sep=":") %>%
tidyr::pivot_wider(names_from =Stat, values_from = Value)
})

output$table <-renderTable(sum())
} # server

# Create Shiny object
shinyApp(ui = ui, server = server)

你的问题与Shiny没有任何关系,而是在你在服务器代码中进行的数据操作。

我们可以复制你的问题,而不用创建一个闪亮的应用程序,设置如下:

library(tidyverse)
data  <- iris
input <- list(option = "Species")

现在,当我们运行代码时,我们有一个不需要的列叫做Var1,我们有一个想要重命名的Var2列:

data <- data %>%
select(input$option) %>%
summary() %>%
as.data.frame() %>%
tidyr::separate(Freq, c("Stat", "Value"), sep=":") %>%
tidyr::pivot_wider(names_from =Stat, values_from = Value)
data
#> # A tibble: 1 x 5
#>   Var1  Var2            `setosa    ` versicolor `virginica `
#>   <fct> <fct>           <chr>        <chr>      <chr>       
#> 1 ""    "      Species" "50  "       "50  "     "50  "

我们可以通过一些调整来改善这一点。首先,我们可以把selectVar1列中取出来。其次,我们可以renameVar2列。第三,从表项中删除不需要的空白,最后,从变量名中删除空白:

data  <- iris
data <- data %>%
select(input$option) %>%
summary() %>%
as.data.frame() %>%
select(-Var1) %>%
rename(Variable = Var2) %>%
mutate(across(everything(), trimws)) %>%
tidyr::separate(Freq, c("Stat", "Value"), sep=":") %>%
tidyr::pivot_wider(names_from =Stat, values_from = Value) %>%
setNames(trimws(names(.)))
data
#> # A tibble: 1 x 4
#>   Variable setosa versicolor virginica
#>   <chr>    <chr>  <chr>      <chr>    
#> 1 Species  50     50         50

由reprex包(v2.0.1)创建于2022-06-21

最新更新