闪亮的滑块 - 检索值 - 列表,还是......?

时间:2014-06-08 23:12:15

标签: r shiny

我有一个Shiny app在我的server.R中使用renderUI来创建一组滑块,因为我不知道我需要创建多少个滑块。这在网页端很好用,但我在检索设定值时遇到问题。这是我的代码中的renderUI函数:

output$sliders <- renderUI({
if (input$unequalpts == "no")
    return(NULL)
updateTabsetPanel(session, "inTabSet", selected = "Unequal")
theSHP <- mySHPdata()
thestrata <- unique(as.character(theSHP$shnystr))
numstrata <- nlevels(theSHP$shnystr)

lapply(1:numstrata, function(i) {
      sliderInput(inputId = paste0("strata", i), label = paste("strata ", thestrata[i]),
      min = 0, max = 100, value = c(0, 100), step = 1)
      })
})

以下是我尝试在服务器的后续反应函数中检索值的方法.R:

print("getting slider values...")
mysliders<- NULL
theSHP <- mySHPdata()
numstrata <- nlevels(theSHP$shnystr)
mysliders <- lapply(1:numstrata, function(i) {
    input[[paste0("strata", i)]]
    })
grtspts <-(mysliders)
print("input sliders are")
print(grtspts)

当我这样做时,print(grtspts)的结果如下:

Browse[2]> grtspts
[[1]]
[1]  0 25

[[2]]
[1]  0 41

[[3]]
[1]  0 22

他不是我想要的;我只想要清单[25,41,22]。我不知道为什么我没有得到一个简单的列表,而是,似乎是一个列表列表?或者..我不知道;我不明白前导零是什么,就在每个设置滑块值之前。我如何从grtspts中简单地提取25个,比如0和0 25?

1 个答案:

答案 0 :(得分:2)

当您声明sliderInput时,您指定了value = c(0, 100)。来自sliderInput

的文档
  

滑块的初始值。长度为1的数字向量将创建一个常规滑块;长度为2的数字向量将创建一个双端范围滑块。如果值不在最小值和最大值之间,则会发出警告

您创建了一个双端范围滑块,因此返回两个值。要获得第二个值,您可以使用

input[[paste0("strata", i)]][2]