Я использую ggvis и имею следующий код с selectInput на стороне пользовательского интерфейса, позволяя пользователю выбирать, какая переменная диктует заполнение и форму (inputId - заполнение и форма соответственно). Я хочу, чтобы сюжет имел возможность иметь постоянную заливку или форму, если пользователь будет выбирать. Раздел еще этот код работает точно так же, как я хочу, но когда я выбираю опцию в если заявлении приложение падает со следующей ошибкой:Указанный пользователем заполнение
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")
Если вы можете извлечь логику if/else перед операцией ggvis для двух переменных, тогда она должна работать. –
@warmoverflow Это не сработало. Если я помещаю инструкции if else вне ggvis, он все равно дает ту же ошибку, когда выбран параметр constant. – User247365
Вы можете попробовать свою логику вне ggvis, а также перед использованием 'prop'. Создайте переменную, которая является либо переменной отображения, как as.name (input $ fill) 'OR' "black" на основе вашей логики. Передайте эту новую переменную в 'prop' в' layer_points', например, 'prop (" fill ", newvar)' и избегайте ': =' все вместе. – aosmith