我正在使用ggvis,並在UI側有一個selectInput的下面的代碼,允許用戶選擇哪個變量指示填充和形狀(inputId分別是填充和形狀)。我希望情節能夠有一個恆定的填充或形狀,如果用戶選擇。這段代碼的其他部分的工作正是我想要的,但是當我選擇的if語句的選項與以下錯誤應用程序崩潰:用戶指定的填充
Error in eval: could not find function ":="
我知道我有語法正確的,因爲如果我壓抑着傳說和if/else語句並將填充指定爲常量(fill:=「black」),它的工作原理就是我想要的。
任何幫助,將不勝感激。
vis <- reactive({
fillvar <- prop("fill", as.symbol(input$fill))
shapevar <- prop("shape", as.symbol(input$shape))
filteredData() %>%
ggvis(x = xvar, y = yvar) %>%
layer_points(size.hover := 200,
fillOpacity:= 0.5, fillOpacity.hover := 1,
# Allows for points to be consistent if the user desires
if (input$fill == "All Points Black") {
fill := "black"}
else {
fill = fillvar}
,
if (input$shape == "All Points Circles") {
shape := "circle"}
else {
shape = shapevar}
,
key := ~ID
) %>%
# Adds legends to the Plot in designated locations
add_legend("fill", title = as.character(fillvar)) %>%
add_legend("shape", title = as.character(shapevar), properties = legend_props(legend = list(y=300))) %>%
# Adds the previously defined tool_tip my_tooltip
add_tooltip(my_tooltip, "hover") %>%
# Specifies the size of the plot
set_options(width = 800, height = 400, duration = 0)
})
#Actually plots the data
vis %>% bind_shiny("plot1")
如果你可以提取ggvis語句之前的if/else邏輯爲兩個變量,那麼它應該工作。 –
@warmoverflow這沒有奏效。如果我在ggvis之外放置if else語句,當選擇常量選項時,它仍會給出相同的錯誤。 – User247365
你可以在ggvis之外嘗試你的邏輯,並且在使用'prop'之前。根據你的邏輯做一個變量,它是映射變量'as.name(input $ fill)'或''black「'。將這個新變量傳遞給'layer_points'內的'prop',例如'prop(「fill」,newvar)'並且避免':='全部一起。 – aosmith