我正在开发一个闪亮的应用程序,它在加载时显示一个默认表。有一个用户输入,当我输入并单击运行时应该更新表。而且当点击重置它应该显示默认表。截至现在我能够查看默认表并且当我点击运行按钮时没有任何反应。
optimzation <- function(input, output, session, data,budget,run,reset) {
v <- reactiveValues(data = data)
observeEvent(run, {
v$data <- data %>% mutate(carb = mpg * budget)
})
observeEvent(reset, {
v$data <- data # your default data
})
output$mod_table <- DT::renderDataTable({
DT::datatable(v$data, filter = "top")
})
}
optimzationUI <- function(id) {
ns <- NS(id)
dataTableOutput(ns("mod_table"))
}
shinyApp(
ui = basicPage(
mainPanel(
numericInput("budget_input", label = h5("Total Budget"), value = 9000000),
actionButton("opt_run", "Run"),
actionButton("opt_reset", "Reset"),
tags$hr(),
optimzationUI("optimize")
)
),
server = function(input, output) {
demodata<-mtcars …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 d3js 创建一些条形图。我使用相同的 js 作为模板并传递不同的数据来显示图表。如果它们少于 10 个数据点,则 x 轴标签看起来不错。但是,如果它们的数据点超过 10 个,则 x 轴标签会重叠和聚集。所以我试图找出一种方法,我可以跳过每 4 个滴答声。下面是代码。当大于 9 个数据点时,它根本不显示任何刻度。
` var ticks = d3.selectAll(".tick text");
function tickLabels(dataLength, d) {
if (dataLength < 9) return "";
return ticks.attr("class", function(d,i){
if(i%3 != 0) d3.select(this).remove();
})
}
var xAxis = d3.axisBottom().scale(x)
.ticks()
.tickFormat(function(d,i) { return tickLabels(all.length, d) })
`
Run Code Online (Sandbox Code Playgroud) 我正在尝试动态呈现我在 R 中使用的盒子的标题。
截至目前,框代码如下所示
box( title = "lorem ipsum",
width = 6,
solidHeader = TRUE,
status = "primary",
tableOutput("consumption"),
collapsible = T
)
Run Code Online (Sandbox Code Playgroud)
是否可以在服务器中使用渲染文本并将文本作为标题传递:
con1 <- renderText({
if (age() == FALSE)
{
return("lorem1")
}
else
{
return("lorem2")
}
})
Run Code Online (Sandbox Code Playgroud) 我正在尝试生成一个报告,我想在其中从 Shiny 应用程序的多个选项卡中输出表格和图表。下面是我的闪亮应用程序和降价代码。当我尝试下载报告时,我没有得到情节,而只有 R 代码。如何在可下载报告中呈现输出。
app.R
library(shiny)
library(shinyWidgets)
library(shinydashboard)
library(DT)
library(plotly)
library(rmarkdown)
sidebar <- dashboardSidebar(
sidebarMenu(id = "tab",
menuItem("1", tabName = "1"),
menuItem("2", tabName = "2"),
downloadButton("report", "Generate report")
)
)
body <- ## Body content
dashboardBody(box(
tabItems(
tabItem(tabName = "1",
fluidRow(DT::dataTableOutput("atc_topline"))
),
tabItem(tabName = "2",
fluidRow( plotlyOutput("stack"))
)
)
))
ui <- dashboardPage(dashboardHeader(title = "Scorecard"),
sidebar,
body)
# Define the server code
server <- function(input, output,session) {
delta_plot <- data.frame(structure(list(Month = structure(c(17257, 17287, 17318, 17348,
17379, 17410, 17440, 17471, …Run Code Online (Sandbox Code Playgroud) 我在 r 中有一个数据框,其中有一列是一个大字符串。我想使用该字符串创建具有特定值的新列。
这是示例数据框:
dom <- data.frame(
Site = c("alpha", "beta", "charlie", "delta"),
Banner = c("testing_Watermelon -DPI_300x250 v2" , "notest_Vanilla Latte-DPI_300x250 v2" , "bottle :15s","aaaa vvvv cccc Build_Mobile_320x480")
)
Run Code Online (Sandbox Code Playgroud)
现在,如果列 Banner 有包含Watermelonor 的字符串,Vanilla那么新列label应该只有值Watermelon或Vanillaelse Default。以下是预期的数据帧应该是什么样的。
我如何使用grep或其他任何东西来拥有多个条件?
dom_output <- data.frame(
Site = c("alpha", "beta", "charlie", "delta"),
Banner = c("testing_Watermelon -bbb_300x250 v2" , "notest_Orange aaa_300x250 v2" , "bottle :15s","aaaa vvvv cccc 320x480"),
label = c("Watermelon","Vanilla","Default","Default")
)
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我试图使用plotly作为多折线图来绘制它。下面是数据框的样子:
Month_considered pct.x pct.y pct
<fct> <dbl> <dbl> <dbl>
1 Apr-17 79.0 18.4 2.61
2 May-17 78.9 18.1 2.99
3 Jun-17 77.9 18.7 3.42
4 Jul-17 77.6 18.5 3.84
5 Aug-17 78.0 18.3 3.70
6 Sep-17 78.0 18.9 3.16
7 Oct-17 77.6 18.9 3.49
8 Nov-17 77.6 18.4 4.01
9 Dec-17 78.5 18.0 3.46
10 Jan-18 79.3 18.4 2.31
11 2/1/18 78.9 19.6 1.48
Run Code Online (Sandbox Code Playgroud)
当我迭代绘制多条线时,下面是使用的代码。
colNames <- colnames(delta)
p <-
plot_ly(
atc_seg_master,
x = ~ Month_considered,
type = 'scatter',
mode …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用书签的闪亮应用程序。因此,当在 Shinyapps.io 上托管此应用程序时,我不希望其他用户看到我使用用户登录所做的书签。我尝试使用,User = Sys.getenv("LOGNAME"))但它总是将用户名返回为 Shiny。
我有一个带有多个标签的闪亮应用程序。每个选项卡都有数据表,绘图图表。在一个选项卡中,我尝试使用 URL 书签功能。当我将此书签用作单独的闪亮选项卡时,我可以单击带有书签的 URL,它会进入书签状态。然而,在这个更大的应用程序中,当我使用相同的代码时,URL 很长并且不会重定向到书签状态。这是带书签的 URL 的样子
library(shiny)
library(ggplot2)
library(DT)
library(shinyjqui)
library(shinydashboard)
library(shinydashboardPlus)
library(data.table)
ui <- navbarPage(
"Navbar!",
tabPanel("Plot",
sidebarLayout(
sidebarPanel(radioButtons(
"plotType", "Plot type",
c("Scatter" = "p", "Line" = "l")
)),
mainPanel(plotOutput("plot"))
)),
tabPanel(
"Summary",
fluidPage(
plotOutput("bookmarkplot"),
sliderInput("n", "Number of observations", 1, nrow(faithful), 100),
fluidRow(column(
2,
textInput(
inputId = "description",
label = "Bookmark description",
placeholder = "Data Summary"
)
), column(2, bookmarkButton(id = "bookmarkBtn"))),
DT::dataTableOutput("urlTable", width = "100%"),
tags$style(type = 'text/css', "#bookmarkBtn { width:100%; margin-top: 25px;}")
)
),
navbarMenu(
"More", …Run Code Online (Sandbox Code Playgroud) 我试图了解如何使用已编辑数据表中的值并进行一些计算。
我有一个默认加载的数据框。当您单击“运行”时,它将根据输入值更新表。
我希望用户在表中手动编辑值,然后单击“运行”。接下来,我希望该应用程序在数据表中获取已编辑的值,运行一些计算并更新该表。这样,用户可以在表上动态查看其输入结果。
library(shiny)
library(DT)
library(dplyr)
#### Module 1 renders the first table
tableMod <- function(input, output, session, modelRun,modelData,budget){
output$x1 <- DT::renderDataTable({
modelRun()
isolate(
datatable(
modelData %>%
mutate(New_Membership = as.numeric(Modified * 0.01)*(budget())),
selection = 'none', editable = TRUE
)
)
})
observeEvent(input$x1_cell_edit, {
df[input$x1_cell_edit$row,input$x1_cell_edit$col] <<- input$x1_cell_edit$value
})
}
tableUI <- function(id) {
ns <- NS(id)
dataTableOutput(ns("x1"))
}
ui <- function(request) {
fluidPage(
tableUI("opfun"),
numericInput("budget_input", "Total Forecast", value = 2),
actionButton("opt_run", "Run")
)
}
server <- function(input, output, session) {
df …Run Code Online (Sandbox Code Playgroud) 我在闪亮的应用程序中使用流畅的行和列布局。当我减小屏幕尺寸时,两列中的元素会重叠。如果它们是两个不同的列,并且使用流体行,则内容不应重叠。下面是代码。我有两列,宽度分别为4和8。它们在正常的屏幕尺寸下似乎工作正常,但是一旦我最小化窗口,它们就会重叠。
library(shiny)
library(shinyjs)
ui <- navbarPage(
"Bootstrap scrollspy on multiple tabs",
id = "navbar",
header = div(
useShinyjs(),
extendShinyjs("www/app-shinyjs.js", functions = c("updateScrollspy")),
includeCSS("www/app.css"),
includeScript("https://cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/1.4.3/jquery.scrollTo.min.js")
),
# tab 1 contains 4 sections and a scrollspy on the left with text
tabPanel(
"tab1",
div(id = "tab1-content",
fluidRow(
column(
4,
div(
id = "tab1-scrollspy",
class = "potential-scrollspy",
tags$ul(
class = "nav nav-pills nav-stacked",
tags$li(tags$a(href = "#section1-1", "Section 1-1")),
tags$li(tags$a(href = "#section1-2", "Section 1-2")),
tags$li(tags$a(href = "#section1-3", "Section 1-3")),
tags$li(tags$a(href = "#section1-4", "Section 1-4")) …Run Code Online (Sandbox Code Playgroud)