R-Shining:可变滑块输入范围
我用闪亮的传单来绘制地图。我通过R-Shining:可变滑块输入范围,r,leaflet,shiny-server,shiny,R,Leaflet,Shiny Server,Shiny,我用闪亮的传单来绘制地图。我通过selectInput功能动态获取地图输入。我所采用的所有矩阵都是不同维度的。现在我想通过sliderInput函数限制行数 为此,我想确保range(“selected”)=range(“sliderInput”) 为此,可以进行以下数据输入: 数据输入 library(data.table) mat1 = data.table(long = runif(40, -87, -80), lat = runif(40, 25, 42), name = le
selectInput
功能动态获取地图输入。我所采用的所有矩阵都是不同维度的。现在我想通过sliderInput
函数限制行数
为此,我想确保range(“selected”)=range(“sliderInput”)
为此,可以进行以下数据输入:数据输入
library(data.table)
mat1 = data.table(long = runif(40, -87, -80), lat = runif(40, 25, 42), name = letters, state= letters)
mat2 = data.table(long = runif(9123, -87, -80), lat = runif(40, 25, 42), name = letters, state= letters)
mat3 = data.table(long = runif(722, -87, -80), lat = runif(40, 25, 42), name = letters, state= letters)
phys_summ = data.table(long = runif(9845, -87, -80), lat = runif(40, 25, 42), name = letters, state= letters)
mat4 = data.table(long = runif(99999, -87, -80), lat = runif(40, 25, 42), name = letters, state= letters)
知道我该怎么做吗
第一次编辑我的r代码正在动态获取矩阵。但滑块输入工作不正常:
R代码:
library(shiny)
library(leaflet)
{r, echo=FALSE, warning=FALSE, message=FALSE}
r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()
var=c("matrix 1" = "mat1",
"matrix 2" = "mat2",
"matrix 3" = "mat3",
"matrix 4 " = "mat4" )
shinyApp(
ui =shinyUI(fluidPage(
# Sidebar with a slider input for number of bins
sidebarPanel(
selectInput("pid", "1. Select the providers ", var, selected= "mat1", selectize = TRUE ),
br(),
#sliderInput("bins", "2, Select the number of BINs for Map", min = 5, max = nrow(get(var$input)), value=10)
# radioButtons("color", "3, Select the color of histogram", choices =c("Green", "Red", "Yellow"), selected= "Green")
),
# Show a plot of the generated distribution
mainPanel(
tabsetPanel(type = "tabs",
tabPanel('Leaflet Map', leafletOutput("leaflet_map")),
tabPanel('Circular Map', leafletOutput("circular_map"))
)))),
server = shinyServer(function(input, output) {
output$leaflet_map <- renderLeaflet({
maptab <- get(input$pid)
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(lng=maptab[,'long'][1:input$bins], lat=maptab[,'lat'][1:input$bins],popup=maptab[,'name'])
m # Print the map
})
### Top Doctors circular map
output$circular_map <- renderLeaflet({
maptab <- get(input$pid)
m = leaflet() %>% addTiles()
df = data.frame(
lng=maptab[,'long'][1:input$bins],
lat=maptab[,'lat'][1:input$bins],
size = runif(input$bins, 5, 20),
category = factor(maptab[,'state']),
color = sample(colors(), input$bins)
)
m = leaflet(df) %>% addTiles()
m %>% addCircleMarkers(radius = runif(input$bins, 4, 10), color = c('red','blue','green'))
})
})
)
库(闪亮)
图书馆(单张)
{r,echo=FALSE,warning=FALSE,message=FALSE}
r\u colors您需要在server.r的shinyServer({})
部分中使用renderUI({})
来创建依赖于在服务器进程中创建的对象的控制器,然后使用uiOutput()
在ui.R中的正确位置显示该控制器。因此,使用脚本,这将嵌套在shinyServer中,与其他输出生成步骤处于同一级别:
output$setSlider <- renderUI({
sliderInput("bins", "2, Select the number of BINs for Map",
min = 5, max = nrow([selected data frame]), value=10)
})
你能展示你的ui.R和server.R代码吗,或者至少有足够的代码来看看你现在用这部分做了什么?另外,还提供了一个关于构建反应式控件的有用讨论。它可能会回答你的问题。@ulfelder:我已经添加了问题中的代码。请看一看。我得到以下错误:$operator对atomic vecto无效是的,看起来在这个过程中还有其他一些错误,包括这个renderUI({})
block正在寻找一个名为“input”的变量“在var
中,这是不存在的。如果你能让它指向一个有效的目标,它应该会起作用。也许您想在映射位之外选择数据帧,作为自己的反应({})
步骤?
uiOutput("setSlider")