我在Shiny应用程序中创建了一个传单地图.现在我需要一个下载按钮,以便用户可以下载当前显示的地图,包括所有标记,多边形等作为pdf文件.
我找到了这个解决方案如何在R中保存传单地图:如何将R地图中的Leaflet保存为png或jpg文件?
但它在Shiny中如何运作?我保持示例代码简单,但想到它,好像在用户想要将地图保存为pdf之前,通过leafletProxy()对地图进行了大量更改.
这是我的尝试,但它不起作用.
server.R
library(shiny)
library(leaflet)
library(devtools)
install_github("wch/webshot") # first install phantomjs.exe in your directory
library(htmlwidgets)
library(webshot)
server <- function(input, output){
output$map <- renderLeaflet({
leaflet() %>% addTiles()
})
observe({
if(input$returnpdf == TRUE){
m <- leafletProxy("map")
saveWidget(m, "temp.html", selfcontained = FALSE)
webshot("temp.html", file = "plot.pdf", cliprect = "viewport")
}
})
output$pdflink <- downloadHandler(
filename <- "map.pdf",
content <- function(file) {
file.copy("plot.pdf", file)
}
)
}
Run Code Online (Sandbox Code Playgroud)
ui.R
ui <- fluidPage(
sidebarPanel(
checkboxInput('returnpdf', 'output pdf?', FALSE),
conditionalPanel(
condition = "input.returnpdf == …Run Code Online (Sandbox Code Playgroud) 我正在使用 RStudio IDE 开发闪亮的应用程序。启动应用程序时,我通常使用 RunApp 按钮:在窗口中运行。这将在具有特定宽度和高度的窗口中打开应用程序。
有没有办法改变这个窗口的宽度,所以每次我启动应用程序时都会在更宽的窗口中显示?
在Python中使用OpenAI-gym的MountainCar-v0环境时,经过200个步骤后,完成的值将成立.这是为什么?由于未达到目标状态,因此不应该进行这一集.
import gym
env = gym.make('MountainCar-v0')
env.reset()
for _ in range(300):
env.render()
res = env.step(env.action_space.sample())
print(_)
print(res[2])
Run Code Online (Sandbox Code Playgroud)
我想运行步骤方法,直到汽车到达标志然后打破for循环.这可能吗?与此类似的东西:
n_episodes = 10
done = False
for i in range(n_episodes):
env.reset()
while done == False:
env.render()
state, reward, done, _ = env.step(env.action_space.sample())
Run Code Online (Sandbox Code Playgroud) 我正在使用带有Shiny的DataTables.使用按钮扩展,用户可以下载或打印数据表中的数据.但是只下载/打印行的可见部分.我想更改该行为,以便可以下载包含所有行的完整data.frame.这可能是按钮扩展或我是否必须切换到downloadHandler?
library(DT)
library(shiny)
df <- data.frame(a = 1:100, b = 1:100)
ui <- fluidPage(
dataTableOutput("table")
)
server <- function(input, output){
output$table <- DT::renderDataTable(df,
extensions = c("Buttons"),
options = list(dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
))
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud) 我正在写一个R包,我想在R帮助文件中包含一个表,例如在该@details部分中.我尝试直接包含markdown代码:
#' | Tables | Are | Cool |
#' | ------------- |:-------------:| -----:|
#' | col 3 is | right-aligned | $1600 |
#' | col 2 is | centered | $12 |
Run Code Online (Sandbox Code Playgroud)
但这并没有给我想要的输出.我已经为整个软件包启用了markdown支持并安装了roxygen2 6.0.1.降价表是否不支持?我必须使用\tabular{}吗?
我想从应用程序内部重新启动闪亮的应用程序,以便例如global.R中的代码将再次执行(用数据重新加载csv文件)。这是显示我想做什么的一个最小示例:
这个闪亮的应用程序会加载一些坐标数据并在地图上绘制标记。将新标记添加到地图时,新坐标应附加到旧数据并保存为csv文件。然后,应用应重新启动,再次加载data.csv,以便所有标记都显示在地图上。我尝试从此处改编代码:重新启动Shiny Session,但这不起作用。该应用程序将重新启动,但不会重新加载csv文件。
library(shinyjs)
library(leaflet)
library(leaflet.extras)
jsResetCode <- "shinyjs.reset = function() {history.go(0)}"
# data <- data.frame(latitude = 49, longitude = 13)
data <- read.csv2("data.csv") # this should get executed whenever js$reset is called
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsResetCode),
leafletOutput("map")
)
server <- function(input, output, session){
output$map <- renderLeaflet({
leaflet(data) %>% addTiles() %>%
setView(11.5, 48, 7) %>%
addDrawToolbar() %>%
addMarkers()
})
data_reactive <- reactiveValues(new_data = data)
# add new point to existing data and save data as …Run Code Online (Sandbox Code Playgroud) 我想以闪亮的方式访问传单地图中的当前鼠标位置。使用 Shiny 时,您可以使用 获取点击事件的当前坐标input$MAPID_click,其中包含点击的纬度和经度。同样,我想要input$MAPID_mouseover一个鼠标光标当前纬度和经度的列表。
mapview::addMouseCoordinates(map)在传单地图中显示坐标。它使用 map.latlng.lng 和 map.latlng.lat,但我不知道如何调整代码以返回带有坐标的列表而不是显示它们。
理想情况下,此代码应该可以工作:
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("map"),
br(),
verbatimTextOutput("out")
)
server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet() %>% addTiles()
})
output$out <- renderPrint({
validate(need(input$map_mouseover, FALSE))
str(input$map_mouseover)
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud) 我想在闪亮的应用程序中有一个 textInput,当用户键入某物时,它会向用户显示来自预定义列表(或向量)的可能自动完成。因此,用户可以单击它并节省时间,但也可以编写不在预定义列表中的文本(与 Google 搜索的工作方式类似)。
这是一个例子。用户可以输入“Ap”,然后点击“Apple”。但是也应该可以输入不在预定义列表中的新输入,例如“Orange”。
Shinysky 与我想要的类似(textInput 中的自动完成,但似乎不允许不在选择向量中的新文本。
library(shiny)
library(shinysky) # install from github
choices = c("Apple", "Banana", "Strawberry")
ui <- fluidPage(
textInput.typeahead(
id = "fruit", placeholder="type a fruit name",
local = data.frame(fruit = choices, info = c("info1", "info2", "info3")),
valueKey = "fruit",
tokens = c(1, 2, 3),
template = HTML("<p class='repo-language'>{{info}}</p> <p class='repo-name'>{{fruit}}</p> <p class='repo-description'>You need to learn more CSS to customize this further</p>")
),
verbatimTextOutput("value")
)
server <- function(input, output, session) {
# typeahead
observe({
input$fruit
showshinyalert(session, "shinyalert3", …Run Code Online (Sandbox Code Playgroud) 我有一个闪亮的应用程序,在navbarPage中的tabPanel内有一个mainPanel和一个sidebarPanel.我需要一个隐藏sidebarPanel的选项,类似于:隐藏在shinydashboard中的侧边栏和https://github.com/daattali/shinyjs/issues/43.
actionButton应控制是否显示sidebarPanel或折叠.
这是代码:
library(shiny)
library(shinyjs)
ui <- fluidPage(
navbarPage("",
tabPanel("tab",
sidebarPanel(
useShinyjs()
),
mainPanel(actionButton("showSidebar", "Show sidebar"),
actionButton("hideSidebar", "Hide sidebar")
)
)
)
)
server <-function(input, output, session) {
observeEvent(input$showSidebar, {
shinyjs::removeClass(selector = "body", class = "sidebarPanel-collapse")
})
observeEvent(input$hideSidebar, {
shinyjs::addClass(selector = "body", class = "sidebarPanel-collapse")
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮忙:)
我正在开发一个 R 包,其中包含以下功能:
#' @export
makeEnvironment = function(name) {
envir = R6::R6Class(
public = list(
initialize = function(name) {
remote.base = "http://127.0.0.1:5000"
private$client = gym::create_GymClient(remote.base)
private$instance.id = gym::env_create(private$client, name)
outdir = "/tmp/random-agent-results"
gym::env_monitor_start(private$client, private$instance.id, outdir,
force = TRUE, resume = FALSE)
print(gym::env_action_space_info(private$client, private$instance.id))
}
),
private = list(
client = NULL,
instance.id = NULL
)
)
package.path = system.file(package = "reinforcelearn")
path2pythonfile = paste0(package.path, "/gym_http_server.py")
system2("python", args = path2pythonfile, stdout = NULL, wait = FALSE)
envir$new(name)
}
Run Code Online (Sandbox Code Playgroud)
我调用的python脚本可以在这里找到:https : …