在列表中保存时,plotally中动态选择的变量无法正确呈现,但可以

时间:2019-02-13 14:16:06

标签: r dynamic plotly r-plotly

请参见下面的玩具示例,该示例再现了该错误。

循环内的打印语句按预期工作,并生成了3个不同的图表。

但是,在循环后运行“ lst”时,我希望呈现相同的3个不同的图表,但是我只得到3个相同(第三个)图表的副本。

(“ get()”在直接使用动态选择的绘图但将其放入列表中时会起作用。)

library(plotly)

lst <- list()
cnt <- 1
for(bar in c("Sepal.Width", "Petal.Length", "Petal.Width")){
  lst[[cnt]] <- plot_ly(data = iris,
                        x = ~Sepal.Length,
                        y = ~get(bar),
                        type = "scatter",
                        mode = "markers")
  print(lst[[cnt]] %>% layout(title = paste(bar, "printed in loop")))
  cnt <- cnt + 1
}
lst

将“〜get(bar)”更改为以下即可解决。我将不胜感激。

y = as.formula(paste0("~", bar))

1 个答案:

答案 0 :(得分:1)

在使用setValue()将其传递到列表之前,您需要渲染可绘制对象:

a.replace(/\\n/g,"\\\\n")