簡體   English   中英

R,將分組列作為字符串傳遞以匯總 function 參數

[英]R, pass grouped column as string to summarize function argument

在下面的代碼中,

# 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列更改為字符串或任何允許在 function 中包含這兩行代碼的格式,即(一種可能的格式)

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}}))

data.table

你可以寫:

library(data.table)
setDT(tmp)
tmp[, .('NewColumn' = get(col2pass))]

我們可以使用summarise_at

library(dplyr)
tmp %>%
     summarise_at(vars(col2pass), min) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM