我在ShinyApp工作,我必须打印出很多类似的情节。我认为让用户通过输入选择所需的y维度是一个优雅的解决方案,因此可以避免拥有大量类似的绘图输出。 我通过以下代码运行了这个:
library(tidyverse)
library(shiny)
set.seed(1)
name <- c("a", "b", "c")
v1 <- sample(1:100, 3)
v2 <- sample(1:100, 3)
df <- data_frame(name, v1, v2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
uiOutput("selector")
),
mainPanel(
plotOutput("plot")
)
)
)
server <- function(input, output){
output$selector <- renderUI({
selectizeInput("select", "select column:", choices = colnames(df), selected = "v1")
})
data <- reactive({
df %>%
select(name, y = input$select)
})
output$plot <- renderPlot({
ggplot(data())+
geom_col(aes(x = name, y = y))+
geom_hline(yintercept = mean(data()$y, na.rm = TRUE), color = "red", size = 1)
})
}
shinyApp(ui = ui, server = server)
代码执行,应用程序按需运行,但我仍然收到错误消息:
错误:
input$select
必须解析为整数列位置, 不是空的
我认为这是由于select命令同时针对变量名和索引(通过输入$ select)。
我想知道是否有更干净或更优雅的方式。
答案 0 :(得分:2)
您可以使用 <?php
$sql = "SELECT * FROM users ORDER BY id ASC";
$result = mysqli_query($conn, $sql);
echo "<table>"; #add this
while ($row = mysqli_fetch_array($result)) {
echo "<tr>"
. "<td>" . $row["0"] . "</td>"
. "<td>" . $row[1] . "</td>"
. "<td>" . $row[2] . "</td>"
. "<td>"
. "<input type='password' value='" . $row[3] . "'readonly='readonly'></td>"
. "<td>" . $row[4] . "</td>"
. "<td>" . $row[5] . "</td>"
. "<td>
<a class='btn btn-success' href='edituser.php?id=" . $row[0] . "'>Update</a>
</td> </tr>";
}
echo "</table>";
?>
,请参阅该函数here的文档。一个工作示例如下所示。
req()
或者,您可以在UI中创建输入,但根据您的应用程序可能无法实现:
library(ggplot2)
library(dplyr)
library(shiny)
set.seed(1)
name <- c("a", "b", "c")
v1 <- sample(1:100, 3)
v2 <- sample(1:100, 3)
df <- data_frame(name, v1, v2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
uiOutput("selector")
),
mainPanel(
plotOutput("plot")
)
)
)
server <- function(input, output){
output$selector <- renderUI({
selectizeInput("select", "select column:", choices = colnames(df), selected = "v1")
})
data <- reactive({
req(input$select)
df %>%
select(name, y = input$select)
})
output$plot <- renderPlot({
ggplot(data())+
geom_col(aes(x = name, y = y))+
geom_hline(yintercept = mean(data()$y, na.rm = TRUE), color = "red", size = 1)
})
}
shinyApp(ui = ui, server = server)
希望这有帮助!