2

columnに依存するデータフレームのユーザー定義を検索する小さな関数がありますdplyr。以下の現在の形式では、非標準評価で列引数を受け入れます-引用符なしで(たとえば、標準評価scenarioの代わりに"scenario")。

search_column <- function(df, column, string, fixed = TRUE){
      df <- dplyr::select_(df, deparse(substitute(column)))
      df <- distinct(df)

      return(grep(string, df[[1]], fixed = fixed, value = TRUE))
    }

ユーザーが列名をどのように入力しても、つまり標準または非標準の評価で関数を機能させる方法はありますか?

4

1 に答える 1

4

文字列入力に追加された追加の引用符を単純に削除することをお勧めしますdeparse。その場合、同じ出力が得られ、コードはどの入力に対しても機能します。

3 つの可能な入力を比較する

gsub('"', "", deparse(substitute("mpg")))
[1] "mpg"
gsub('"', "", deparse(substitute('mpg')))
[1] "mpg"
gsub('"', "", deparse(substitute(mpg)))
[1] "mpg"

したがって、解決策は、最初の行を次のように変更することです

df <- dplyr::select_(df, gsub('"', "", deparse(substitute(column))))
于 2016-01-21T11:58:43.163 に答える