【问题标题】:Can't subset column even if the column exists using SELECT from DPLYR package即使使用 DPLYR 包中的 SELECT 列存在,也无法对列进行子集化
【发布时间】:2020-06-19 23:42:43
【问题描述】:

我正在对具有 19 列的数据框进行子集化。当我将 CRIMINALCASES 添加到 select() 选项时,它显示错误。

data_1 <- data_kerala%>%
select(CONSTITUENCY, NAME, WINNER, PARTY, GENDER,CRIMINALCASES, AGE, CATEGORY, EDUCATION)

这是错误信息

Error: Can't subset columns that don't exist.
✖ The column `CRIMINALCASES` doesn't exist.
Traceback:

1. data_kerala %>% select(CONSTITUENCY, NAME, WINNER, PARTY, GENDER, 
 .     CRIMINALCASES, AGE, CATEGORY, EDUCATION)
2. withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
3. eval(quote(`_fseq`(`_lhs`)), env, env)
4. eval(quote(`_fseq`(`_lhs`)), env, env)
5. `_fseq`(`_lhs`)
6. freduce(value, `_function_list`)
7. withVisible(function_list[[k]](value))
8. function_list[[k]](value)
9. select(., CONSTITUENCY, NAME, WINNER, PARTY, GENDER, CRIMINALCASES, 
 .     AGE, CATEGORY, EDUCATION)
10. select.data.frame(., CONSTITUENCY, NAME, WINNER, PARTY, GENDER, 
  .     CRIMINALCASES, AGE, CATEGORY, EDUCATION)
11. tidyselect::vars_select(tbl_vars(.data), !!!enquos(...))
12. eval_select_impl(NULL, .vars, expr(c(!!!dots)), include = .include, 
  .     exclude = .exclude, strict = .strict, name_spec = unique_name_spec, 
  .     uniquely_named = TRUE)
13. with_subscript_errors(vars_select_eval(vars, expr, strict, data = x, 
  .     name_spec = name_spec, uniquely_named = uniquely_named, type = type), 
  .     type = type)
14. tryCatch(instrument_base_errors(expr), vctrs_error_subscript = function(cnd) {
  .     cnd$subscript_action <- subscript_action(type)
  .     cnd$subscript_elt <- "column"
  .     cnd_signal(cnd)
  . })
15. tryCatchList(expr, classes, parentenv, handlers)
16. tryCatchOne(expr, names, parentenv, handlers[[1L]])
17. value[[3L]](cond)
18. cnd_signal(cnd)
19. rlang:::signal_abort(x)

不明白为什么说列不存在

这里是使用函数 colnames() 的列名

这是列名列表,如图所示是 Kaggle

然后尝试在单词之间添加空格但没有用

【问题讨论】:

    标签: r select dplyr kaggle


    【解决方案1】:

    (抱歉,我是 StackOverflow 的新手,无法发表评论。)

    列名是否可能实际上是 CRIMINAL CASES(带空格)或 CRIMINAL\nCASES?

    您可以试试用反引号 (`) 包裹的 CRIMINAL\nCASES 吗?

    以下内容对我有用,没有问题:

    # creating test tibble
    a <- 
      tribble(
      ~"CRIMINAL\nCASES", ~"random",
      "hi", "bye"
    )
    
    a %>%
      select(`CRIMINAL\nCASES`)
    

    【讨论】:

    • 嗨@lazypanda 感谢您的回答,我尝试用反引号包裹“CRIMINAL\nCASES”,它奏效了。
    猜你喜欢
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    相关资源
    最近更新 更多