r - 错误:参数的“类型”(列表)无效
问题描述
如果我只是运行传单部分。它给出了一个输出,但在闪亮的应用程序中它给出了上述错误。
当我尝试从 addCircleMarkers 中删除代码时,它会给出一个没有任何标记的输出。我猜那个特定的陈述有问题。
另外,我想为每种类型更改传单中的标记形状,但这又是我在互联网上找到的资源中没有的东西。它表明我必须手动查找链接(我需要将近 10 个才能做到这一点)
data('zipcode')
#removing the extra empty column
data$X <- NULL
#cleaning the zipcodes
data$ZIP.CODE <- clean.zipcodes(data$ZIP.CODE)
#adding the Stage2/Stage1 column
combine$ratio <- combine$Stage2/combine$Stage1
combine <- merge(data, zipcode, by.x='ZIP.CODE', by.y='zip')
combine[is.na(combine)] <- 0
ui<-fluidPage(
sidebarLayout(
sidebarPanel(
selectInput('rank','Ziprank',choices=levels(combine$ZIP.RANK),multiple=T,selected = 'A'),
selectInput('type','Ziptype',choices=levels(combine$TYPE),multiple=T,selected = 'PUBLIC'),
selectInput('market','Market',choices=c(1,2,3,4),multiple=T,selected = 1),
selectInput('housevalue','Median Housing Value',choices=levels(combine$MEDIAN.HOUSING.VALUE),multiple=T,selected = '1HVL'),
selectInput('familyincome','Median Family Value',choices=levels(combine$MEDIAN.FAMILY.INCOME),multiple=T,selected = '1MFI'),
selectInput('buyingpower','Median House Buying Power',choices=levels(combine$MEDIAN.HOUSE.BUYING.POWER),multiple=T,selected = '1MHB'),
selectInput('ethnicity','Ethnicity',choices=levels(combine$ETHNICITY),multiple=T,selected = '1ETH'),
selectInput('population','Population Density',choices=levels(combine$POPULATION.DENSITY),multiple=T,selected = '1POP'),
selectInput('masters','Masters Degree',choices=levels(combine$MASTERS.DEGREE),multiple=T,selected = '1MDG'),
selectInput('associate','Associate Degree',choices=levels(combine$ASSOCIATES.DEGREE),multiple=T,selected = '1ADG'),
selectInput('highschool','High School Age Population',choices=levels(combine$HIGH.SCHOOL.AGE.POPULATION),multiple=T,selected = '1HSP'),
selectInput('epscode','EPS code',choices=levels(combine$EPS.CODE),multiple=T,selected = 'MS01'),
selectInput('state','State',choices=unique(combine$state),multiple=T,selected = 'NY'),
sliderInput('score','Zipscore', min(combine$ZIP.SCORE), max(combine$ZIP.SCORE), value=c(0.1,0.3))
),
mainPanel(
leafletOutput('plot')
)
)
)
server <- function(input, output) {
output$plot <-renderLeaflet({
final <- subset(combine, ZIP.RANK %in% input$rank &
TYPE %in% input$type &
MARKET %in% input$market &
MEDIAN.HOUSING.VALUE %in% input$housevalue &
MEDIAN.FAMILY.INCOME %in% input$familyincome &
MEDIAN.HOUSE.BUYING.POWER %in% input$buyingpower &
ETHNICITY %in% input$ethnicity &
POPULATION.DENSITY %in% input$population &
MASTERS.DEGREE %in% input$masters &
ASSOCIATES.DEGREE %in% input$associate &
HIGH.SCHOOL.AGE.POPULATION %in% input$highschool &
EPS.CODE %in% input$epscode &
state %in% input$state &
ZIP.SCORE >= input$score[1] & ZIP.SCORE <= input$score[2]
)
pal <- colorNumeric(palette = "Reds", domain = c(0:1))
p <- final %>%
leaflet() %>%
addProviderTiles('CartoDB') %>%
addCircleMarkers(data = final, color = ~pal(ZIP.SCORE),label=~GEONAME) %>%
addLegend(title = "ZipScore", pal = pal, values = c(0:1),
position = "bottomright")
p
})
}
shinyApp(ui = ui, server = server)
解决方案
您需要通过添加您的圆圈标记leafletProxy()
。在我看来,你应该用以下方式重写你的代码。将您的pal
声明放在您的用户界面上方。将您引用的所有数据子集包装final
在其自己的reactive({})
函数中。然后你可以leaflet()
在 base call中添加你的output$Plot
。您可以通过自己的观察者更新用户输入,observe()
并使用传单自己的更新功能引用用户输入leafletProxy()
pal <- colorNumeric(palette = "Reds", domain = c(0:1))
server <- function(input, output) {
final <- reactive({
data_subset <- subset(combine, ZIP.RANK %in% input$rank &
TYPE %in% input$type &
MARKET %in% input$market &
MEDIAN.HOUSING.VALUE %in% input$housevalue &
MEDIAN.FAMILY.INCOME %in% input$familyincome &
MEDIAN.HOUSE.BUYING.POWER %in% input$buyingpower &
ETHNICITY %in% input$ethnicity &
POPULATION.DENSITY %in% input$population &
MASTERS.DEGREE %in% input$masters &
ASSOCIATES.DEGREE %in% input$associate &
HIGH.SCHOOL.AGE.POPULATION %in% input$highschool &
EPS.CODE %in% input$epscode &
state %in% input$state &
ZIP.SCORE >= input$score[1] & ZIP.SCORE <= input$score[2])
})
})
output$plot <-renderLeaflet({
leaflet(data = combine) %>%
addProviderTiles('CartoDB')
})
observe({
leafletProxy("plot", data = final() %>%
addCircleMarkers(color = ~pal(final()$ZIP.SCORE), label=~final()$GEONAME) %>%
addLegend(title = "ZipScore", pal = pal, values = c(0:1),
position = "bottomright")
})
}
推荐阅读
- excel - 如何将工作表用作函数?
- google-apps-script - 不一致的错误消息“不允许操作(第 298 行,文件”
")" - ios - 在模拟器上运行,同时拥有在模拟器上不显示类的 SDK(阻止我运行)
- javascript - 如何将函数作为方法添加到返回的数组?
- ios - 如果应用程序在两者之间关闭,如何处理自动续订订阅?
- php - “检查损坏的扩展”的奇怪问题
- python - Imageio 或 OpenCv 在更改图像阵列后保存黑色空白图像
- security - Teradata 发布——补丁信息深藏不露?
- c# - 如何在控制台应用程序中使用 c# 将文件从本地计算机上传到 s3 glacier 的库?
- spring - 在与内存服务器集成时,如何在 Spring Boot 中执行测试?