我正在创建一个闪亮的应用程序,并使用用户输入来创建图形。当我专门命名管道中的列时,管道和图形即可工作:
f <- fb_ad %>%
filter(geo == d_choices[2]) %>%
group_by(ad_name) %>%
summarise(n = sum(clicks))
但是,当我使用包含列名/用户输入的列表,然后像这样通过管道访问列表的元素时,它不起作用:
ycol <- c("impressions","reach", "clicks",
"age", "gender")
f <- fb_ad %>%
filter(geo == d_choices[2]) %>%
group_by(ad_name) %>%
summarise(n = sum(ycol[3]))
我得到了错误:
Error in summarise_impl(.data, dots) :
Evaluation error: invalid 'type' (character) of argument.
为什么不起作用,我该如何解决?谢谢!
答案 0 :(得分:2)
如果您具有dplyr的最新版本以及已安装的rlang软件包,则可以使用:
f <- fb_ad %>%
filter(geo == d_choices[2]) %>%
group_by(ad_name) %>%
summarise(n = sum(!!rlang::sym(ycol[3])))
(对于其他没有您数据的人)这个原则的一个微型示例是:
library(tidyverse)
ddf <-
data.frame(X = rnorm(5), Y = rnorm(5), A = c("A", "A", "B", "B", "B")) %>%
tbl_df() %>% mutate(A = as.character(A))
Ch <- c("X", "Y")
ddf %>% group_by(A) %>%
summarise(N := sum(!!rlang::sym(Ch[2])))
答案 1 :(得分:0)
这是<div class="modal" id="addQuestion" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button class="close" data-dismiss="modal">×</button>
<h4>DemoTitle</h4>
</div>
<div class="modal-body">
<p>put a lot of stuff here</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal">close</button>
</div>
</div>
</div>
有用的地方,因为<div class="admin-center">
<table id="main-table" class="table table-striped table-bordered">
<thead>
<tr>
<th class="select-all">
<input type="checkbox" class="hide" id="select-all-checkbox" />
<h3><label style="font-weight:normal;" for="select-all-checkbox">Select</label></h3>
</th>
<th><h4 class="nobr"><label>Position</label></h4></th>
<th><h4 style="text-align:left;" class="nobr"><label>Question</label></h4></th>
</tr>
</thead>
<tbody>
@foreach (var question in Model.allQuestions)
{
<tr>
<td><input type="checkbox" name="select" value="@question.position" /></td>
<td>@question.position</td>
<td style="text-align:left;">@question.question</td>
</tr>
}
</tbody>
</table>
<br />
<br />
<div class="admin-center">
<button id="btnUp" class="btn btn-lg btn-primary">Move Up</button>
<button id="btnDown" class="btn btn-lg btn-primary">Move Down</button>
</div>
<br />
<div class="admin-center">
<a class="btn btn-lg btn-primary" data-toggle="#addQuestion">Add Questions</a>
<a class="btn btn-lg btn-primary">Delete Question</a>
</div>
变体直接支持字符串。
任何要汇总的变量都可以直接作为字符串传递,并且汇总功能可以按名称传递。如果要重命名输出列,可以将函数放在summarise_at()
内。
这是您的示例代码的样子:
_at