Ошибка квазицитирования: неправильный размер (1) в позиции 1, ожидание: 144000

Я хочу передать список столбцов в функцию упорядочения. Я пытался использовать функцию enquos

где столбец.названия

column.names <- c(colnames(SQL_Table))
column.names
 [1] "plan"           "class"          "gender"         "band"           "marital_status" "acceleration"   "extension"     
 [8] "inflation"      "iss_age"        "cell"           "dur"            "db_perk"        "accel_perk"     "ext_perk"      
[15] "attage" 

и мой код

column.names <- c(colnames(SQL_Table))

arrange.remove <- c("cell","db_perk","accel_perk","ext_perk","attage","db_perk_compare")
arrange.columns <- setdiff(column.names,remove)
arrange_quo <-  enquos(arrange.columns)

SQL_Table %>%
  arrange(!!arrange_quo)

я получаю сообщение об ошибке

Error: incorrect size (1) at position 1, expecting : 144000

person PaulR1999    schedule 24.06.2019    source источник
comment
Вам нужен rlang::syms вместо enquos и оператор сплайсинга !!!.   -  person Alexis    schedule 25.06.2019


Ответы (1)


В соответствии с этим post вы можете использовать конструкцию:

cols.names <- colnames(df)
df[do.call('order', df[cols.names]), ]
df[do.call('order', c(df[cols.names], list(decreasing=TRUE))), ]

Итак, в случае использования конвейера:

df %>% 
  .[do.call("order", .[cols.names]), ]

Однако для одного имени столбца также работает:

col.name <- "column.name"
df %>%
  arrange(.[[get("col.name")]])
person egor41    schedule 25.10.2019