我正在使用 R 中的软件包附带的内置“可卡因”数据库ggvis
来可视化每个州的可卡因效力计数。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
目标是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)
问题是为什么我们需要表达式input_select()
被“评估” eval()
。猜测可能是因为filter
它是包中的一个函数dplyr
,因此在环境中没有与ggvis
;进行通信。eval
因此在ggvis
环境中初始化它。也许有人可以提出一个可以帮助我们形象化的概念?