我使用内置的"可卡因" R中的ggvis
包附带的数据库,用于显示每个州的可卡因效力计数。还使用了R包dplyr
。
这是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
目标是在ggvis包中使用input_select()
创建一个下拉菜单,其中可以选择各种状态并查看该状态的效力计数的直方图。我们设法用这段代码做到了:
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()
进行评估&#34; eval()
。猜测可能是因为filter
是来自dplyr
包的函数,因此不会在环境中与ggvis
进行通信;因此,eval
会在ggvis
环境中对其进行初始化。也许有人可以使用一个可以帮助我们想象这个概念的概念?