使用R中的ggvis使用input_select()进行动态过滤

fro*_*onk 5 filtering r dynamic dplyr ggvis

我正在使用ggvisR中的包装附带的内置"可卡因"数据库来可视化每个州的可卡因效力计数.dplyr还使用了R包.

这是cocaine数据集的前六行:

 state potency weight month price
1    WA      77    217     1  5000
2    CT      51    248     1  4800
3    FL      68     43     1  3500
4    OH      69    123     1  3500
5    MS      75    118     1  3400
6    VA      73    127     1  3000
Run Code Online (Sandbox Code Playgroud)

目标是input_select()在ggvis包中使用创建下拉菜单,其中可以选择各种状态并查看该状态的效力计数的直方图.我们设法用这段代码做到了:

state <- as.vector(unique(cocaine$state))

cocaine %>%
          ggvis(~potency) %>%
            filter(state == eval(input_select(
            choices = state,
            selected = "NY",
            label = "State"))) %>%
          layer_histograms(binwidth = 2)
Run Code Online (Sandbox Code Playgroud)

问题是为什么我们需要表达式input_select()被"评估" eval().猜测可能是因为filter是来自dplyr包的函数,因此不在环境中进行通信ggvis; eval因此在ggvis环境中初始化它.也许有人可以使用一个可以帮助我们想象这个概念的概念?