R将分组列作为字符串传递给函数参数汇总。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R将分组列作为字符串传递给函数参数汇总。相关的知识,希望对你有一定的参考价值。
在下面的代码中:
# data frame df has columns A, B, C, D, E and few more
tmp = group_by( df, A, B, C, D)
tmp = summarise( tmp, NewColumn = min( E))
我想改变列 E
在第二行中加入一个sting或任何格式,允许在一个函数中加入这两行代码,即(一种可能的格式)。
getSummary = function( tmp = NULL, col2pass = 'E') {
tmp = group_by( df, A, B, C, D)
tmp = summarise( tmp, NewColumn = min( col2pass))
return( tmp)
}
我试过了 tmp[ , colnames( tmp)[[ index_of_E]]]
, tmp[ 'E']
或者只是 "E"
但这显然是行不通的;在前两种情况下,分组丢失了,而在第二种情况下,字符串被解释为一个字面字符串。
谢谢你
答案
你面临着一个棘手的问题,那就是用标准评价的方法来处理 dplyr
. 如果你开始使用变量名编写函数,你可能会发现 data.table
更容易处理(你有例子在 我的帖子)
dplyr
随着 dplyr
你可以用 rlang
来取消变量的引号。
tmp = summarise( tmp, NewColumn = min(!!rlang::sym(col2pass)))
你也可以使用 {{}}
取消引号的语法是(近况):
tmp = summarise(tmp, NewColumn = min({{col2pass}}))
数据表
你可以写。
library(data.table)
setDT(tmp)
tmp[, .('NewColumn' = get(col2pass))]
另一答案
我们可以用 summarise_at
library(dplyr)
tmp %>%
summarise_at(vars(col2pass), min)
以上是关于R将分组列作为字符串传递给函数参数汇总。的主要内容,如果未能解决你的问题,请参考以下文章
在 R 中,如何将参数作为字符串传递给像 plotXtabs2 这样的函数?