我有这个data.frame:
Campanas1 variable sessions
1 Adwords sumResults 69
2 Campa�as sumResults 2
3 Directo sumResults 10947
4 Email sumResults 413
5 Referencias sumResults 12991
6 SEO sumResults 37693
7 Social Media sumResults 5993
8 Others sumResults 2
我用这段代码制作了一个条形图:
Sesiones_Campanas1 %>% ggvis(~Campanas1, ~sessions, fill := "red") %>% layer_bars()
问题:如何为每个/所有来源(来自Campanas1)设置一个选择器?
我的尝试:
Sesiones_Campanas1 %>% ggvis(~Campanas1, ~sessions, fill := "red") %>% layer_bars(input_select(label = "Fuente"),
choices = c("Email",
"Directo", "Adwords",
"Campanas1", "Referencias", "SEO",
"Social Media"))
但是我收到了这个错误:
Error: length(x) not equal to 1
答案 0 :(得分:1)
首先,您需要2个库来执行此操作:dplyr
和stringi
:
library(dplyr)
library(stringi)
selector <- c('Adwords', 'Campanas', 'Directo', 'Email', 'Others', 'Referencias', 'SEO', 'Social_Media', 'All' = 'Adwords_Campanas_Directo_Email_Others_Referencias_SEO_Social_Media' )
#the selector is a vector to include all your choices
实际所需的代码:
Sesiones_Campanas1 %>% #the table
ggvis(~Campanas1, ~sessions, fill := "red") %>% #the ggvis object
filter(stri_detect_fixed(eval(input_select(choices=selector, label='Fuente' )) , Campanas1) ) %>% #the difficult part. You need to use filter and stri_detect_fixed with the input select to get exactly what you need.
layer_bars() #plot bars
我无法上传交互式图表(我认为),因此我会上传静态all
图表(但您可以看到下拉框及其中的所有选项)。
P.S。如果x轴标签不能正确显示,那是因为你需要增加图形尺寸(适用于Rstudio和浏览器)
PS2关于filter
行如何工作的几句话:您需要eval
将input_select
结果评估为字符串,以便它可以与{{1}匹配功能。 stri_detect_fixed
然后决定要使用哪些行。
那就是它!
<强>更新强>
为了拥有所有&#39;在开头选择的源需要指定filter
参数,如下所示:
selected
希望这会有所帮助!!