アレンジ()は列名パラメーターを認識しません

エリアキム

R内ではdplyr、より具体的にはを使用しますarrange()どういうわけか、arrange関数は期待どおりに機能しません。

以下の例では、最初に列の名前を格納し、次にこの変数をパラメーターとして「my_function」というカスタム関数に渡します。

target_column = 'mean_age'

# below the function
my_function <- function(target_column, number){
    df <- read.csv('file.csv', stringsAsFactors=FALSE)
    df <- df[, c(1,4,10)]
    names(df) <-  c('place','state','mean_age')
    df1 <- df %>% group_by(state) %>% arrange(target_column) 
    df1 %>% summarise(rank = nth(target_column, number))        
}

arrange()への入力が原因で 'my_function'が呼び出されると、Rはエラーを返します

"arrange_impl(.data、dots)のエラー:位置1のサイズ(1)が正しくありません:4000が必要です"

列の名前が、arrange()文字列を参照する変数(上記の例のように)ではなく、に直接入力されると、パラメーターを受け入れます。

df %>% group_by(state) %>% arrange(mean_age) 

列名のパラメーターをより適切な方法で「my_function」に渡すと、それarrange()が認識されますか?

avid_useR

最初に文字列引数を解析してクォージャーにし、次に!!:で引用符を外す必要があります

library(dplyr)
library(rlang)

target_column = 'mean_age'

my_function <- function(target_column, number){
    target_quo = parse_quosure(target_column)

    df <- read.csv('file.csv', stringsAsFactors=FALSE)
    df <- df[, c(1,4,10)]
    names(df) <-  c('place','state','mean_age')
    df1 <- df %>% group_by(state) %>% arrange(!!target_quo) 
    df1 %>% summarise(rank = nth(target_column, number))        
}

my_function('mean_age', 10)

target_column引用符で囲まれていない列名として指定できるようにする場合は、enquo代わりに次を使用できます

my_function <- function(target_column, number){
    target_quo = enquo(target_column)

    df <- read.csv('file.csv', stringsAsFactors=FALSE)
    df <- df[, c(1,4,10)]
    names(df) <-  c('place','state','mean_age')
    df1 <- df %>% group_by(state) %>% arrange(!!target_quo) 
    df1 %>% summarise(rank = nth(target_column, number))        
}

my_function(mean_age, 10)

注意:

通常、enquo文字列引数に対しても機能しますが、arrangeそれ自体では許可されないため、2番目の例では以下は機能しません。

my_function('mean_age', 10)

以下は、OPの質問が再現できないため、私が何を意味するかを示すおもちゃの例です。

library(dplyr)
library(rlang)

test_func = function(var){
    var_quo = parse_quosure(var)
    mtcars %>%
      select(!!var_quo) %>%
      arrange(!!var_quo)
}

test_func2 = function(var){
  var_quo = enquo(var)
  mtcars %>%
    select(!!var_quo) %>%
    arrange(!!var_quo)
}

結果:

> test_func("mpg") %>%
+   head()
   mpg
1 10.4
2 10.4
3 13.3
4 14.3
5 14.7
6 15.0

> test_func2(mpg) %>%
+   head()
   mpg
1 10.4
2 10.4
3 13.3
4 14.3
5 14.7
6 15.0

> test_func2("mpg") %>%
+   head()

アレンジ_impl(.data、dots)のエラー:位置1のサイズ(1)が正しくありません:32が必要です

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ProjectToはパラメーターのないコンストラクターを認識しません

分類Dev

私のコントローラーはパラメーターを認識しません

分類Dev

printはベアワードをパラメーターとして認識しませんか?

分類Dev

SQLServerストアドプロシージャoDateをパラメータとして認識されません

分類Dev

Swaggerはx-www-urlecondedパラメーターを認識しません

分類Dev

反応はパラメータを認識していませんか?

分類Dev

rswaggemはrspecの私のパラメータを認識しません

分類Dev

高速API投稿は私のパラメータを認識しません

分類Dev

テンプレート化されたテンプレートパラメータU <T>はconst修飾子を認識しません

分類Dev

jqueryセレクターはlink_to +アンカーを認識しません

分類Dev

Makefileはパターンルールを認識しません

分類Dev

プリペアドステートメントは、PostgresJSバインディングのパラメータを認識しません

分類Dev

crontabはシェルコマンドで$ 1パラメータを認識しません

分類Dev

ジェネリックメソッドは、パラメーターとして渡すときにジェネリック型を認識しません

分類Dev

Swaggerは、カスタム属性[FromContent]を持つWebAPIコントローラーパラメーターを認識しません

分類Dev

aptアップグレードはapt-offlineパッケージを認識しません

分類Dev

aptアップグレードはapt-offlineパッケージを認識しません

分類Dev

SQLServerの「sp_executesql」がパラメータを認識していません

分類Dev

Powershellスクリプトはクエリパラメーターを認識しません

分類Dev

コンパイラは、オーバーライドされたメソッドのロンボクゲッターを認識しません

分類Dev

React-router-domを使用すると、NetlifyはURLパラメータを認識しません

分類Dev

コンパイラはstd :: vectorのメンバー初期化子を認識しません

分類Dev

CUPSはBluetoothレシートプリンターを認識しません

分類Dev

Javaのキュウリは、私の文字列パラメータを認識しません。

分類Dev

アスタリスクはキューメンバーを認識しません

分類Dev

PythonはJupyterNotebookのパッケージを認識しません

分類Dev

Archはsysvinitパッケージを認識しません

分類Dev

コンパイラはテンプレートの特殊化を認識しませんか?

分類Dev

PowerShellパラメーター-「「param」という用語はコマンドレットの名前として認識されません」

Related 関連記事

  1. 1

    ProjectToはパラメーターのないコンストラクターを認識しません

  2. 2

    私のコントローラーはパラメーターを認識しません

  3. 3

    printはベアワードをパラメーターとして認識しませんか?

  4. 4

    SQLServerストアドプロシージャoDateをパラメータとして認識されません

  5. 5

    Swaggerはx-www-urlecondedパラメーターを認識しません

  6. 6

    反応はパラメータを認識していませんか?

  7. 7

    rswaggemはrspecの私のパラメータを認識しません

  8. 8

    高速API投稿は私のパラメータを認識しません

  9. 9

    テンプレート化されたテンプレートパラメータU <T>はconst修飾子を認識しません

  10. 10

    jqueryセレクターはlink_to +アンカーを認識しません

  11. 11

    Makefileはパターンルールを認識しません

  12. 12

    プリペアドステートメントは、PostgresJSバインディングのパラメータを認識しません

  13. 13

    crontabはシェルコマンドで$ 1パラメータを認識しません

  14. 14

    ジェネリックメソッドは、パラメーターとして渡すときにジェネリック型を認識しません

  15. 15

    Swaggerは、カスタム属性[FromContent]を持つWebAPIコントローラーパラメーターを認識しません

  16. 16

    aptアップグレードはapt-offlineパッケージを認識しません

  17. 17

    aptアップグレードはapt-offlineパッケージを認識しません

  18. 18

    SQLServerの「sp_executesql」がパラメータを認識していません

  19. 19

    Powershellスクリプトはクエリパラメーターを認識しません

  20. 20

    コンパイラは、オーバーライドされたメソッドのロンボクゲッターを認識しません

  21. 21

    React-router-domを使用すると、NetlifyはURLパラメータを認識しません

  22. 22

    コンパイラはstd :: vectorのメンバー初期化子を認識しません

  23. 23

    CUPSはBluetoothレシートプリンターを認識しません

  24. 24

    Javaのキュウリは、私の文字列パラメータを認識しません。

  25. 25

    アスタリスクはキューメンバーを認識しません

  26. 26

    PythonはJupyterNotebookのパッケージを認識しません

  27. 27

    Archはsysvinitパッケージを認識しません

  28. 28

    コンパイラはテンプレートの特殊化を認識しませんか?

  29. 29

    PowerShellパラメーター-「「param」という用語はコマンドレットの名前として認識されません」

ホットタグ

アーカイブ