dplyr代码正在运行,但现在无法运行,我不确定为什么

时间:2019-04-25 12:48:55

标签: r dplyr plyr

大约一周前,我写了一些代码,效果很好,但是现在停止工作了。我已经更新了tidyverse软件包,以查看是否可能是问题所在,而并非如此。

以下是一些示例数据:

     yearmo    sex      eco       ue  fs12ago fs12ahead purchases
      200301   Male  neutral negative negative   neutral   neutral
      200301 Female negative negative negative   neutral   neutral
      200301 Female negative negative  neutral   neutral  positive
      200301   Male  neutral  neutral  neutral   neutral   neutral
      200301   Male negative negative negative  positive  negative
      200301   Male negative negative  neutral   neutral  positive
      200301   Male negative negative  neutral   neutral   neutral
      200301   Male negative negative positive   neutral  negative
      200301 Female negative negative negative   neutral  positive
      200301 Female negative negative positive  negative   neutral
      200301 Female negative negative negative  negative  negative
      200301 Female negative  neutral negative   neutral  negative
      200301   Male negative negative  neutral   neutral  negative
      200301 Female positive  neutral  neutral   neutral  positive
      200301   Male negative negative  neutral   neutral  positive
      200301   Male  neutral negative negative   neutral   neutral
      200301 Female  neutral negative negative   neutral   neutral
      200301   Male  neutral negative  neutral   neutral  positive
      200301 Female negative negative negative  negative  positive
      200301 Female positive negative  neutral   neutral  positive

正在运行但现在无法运行的代码是:

    tmp_eco <- data %>% 
      group_by(yearmo) %>%
      count(yearmo, eco)

我过去得到的输出是对名为“ eco”的变量做出肯定,否定或中性反应的人数,例如:

     yearmo     eco         n
      200301  positive     10    
      200301  negative     13
      200301  neutral      9
      200301  positive     7
      200301  negative     5
      200301  neutral      16

我现在得到的错误是:

    Error: Can't subset with `[` using an object of class quoted.
    Call `rlang::last_error()` to see a backtrace

哪个给我:

    <error>
    message: Can't subset with `[` using an object of class quoted.
    class:   `rlang_error`
    backtrace:
      1. dplyr::group_by(., yearmo)
      9. plyr::count(., yearmo, eco)
     14. plyr::eval.quoted(vars, df)
     18. tibble:::`[.tbl_df`(envir, exprs)
     19. tibble:::check_names_df(i, x)
    Call `rlang::last_trace()` to see the full backtrace

对为什么会发生这种情况有任何想法吗?

1 个答案:

答案 0 :(得分:2)

在显示“数据”的情况下,如果我们使用的是group_by,则不需要count

library(dplyr)
data %>% 
   dplyr::count(yearmo, eco)
# A tibble: 3 x 3
#  yearmo eco          n
#   <int> <chr>    <int>
#1 200301 negative    13
#2 200301 neutral      5
#3 200301 positive     2

数据

data <- structure(list(yearmo = c(200301L, 200301L, 200301L, 200301L, 
200301L, 200301L, 200301L, 200301L, 200301L, 200301L, 200301L, 
200301L, 200301L, 200301L, 200301L, 200301L, 200301L, 200301L, 
200301L, 200301L), sex = c("Male", "Female", "Female", "Male", 
"Male", "Male", "Male", "Male", "Female", "Female", "Female", 
"Female", "Male", "Female", "Male", "Male", "Female", "Male", 
"Female", "Female"), eco = c("neutral", "negative", "negative", 
"neutral", "negative", "negative", "negative", "negative", "negative", 
"negative", "negative", "negative", "negative", "positive", "negative", 
"neutral", "neutral", "neutral", "negative", "positive"), ue = c("negative", 
"negative", "negative", "neutral", "negative", "negative", "negative", 
"negative", "negative", "negative", "negative", "neutral", "negative", 
"neutral", "negative", "negative", "negative", "negative", "negative", 
"negative"), fs12ago = c("negative", "negative", "neutral", "neutral", 
"negative", "neutral", "neutral", "positive", "negative", "positive", 
"negative", "negative", "neutral", "neutral", "neutral", "negative", 
"negative", "neutral", "negative", "neutral"), fs12ahead = c("neutral", 
"neutral", "neutral", "neutral", "positive", "neutral", "neutral", 
"neutral", "neutral", "negative", "negative", "neutral", "neutral", 
"neutral", "neutral", "neutral", "neutral", "neutral", "negative", 
"neutral"), purchases = c("neutral", "neutral", "positive", "neutral", 
"negative", "positive", "neutral", "negative", "positive", "neutral", 
"negative", "negative", "negative", "positive", "positive", "neutral", 
"neutral", "positive", "positive", "positive")), 
class = "data.frame", row.names = c(NA, 
-20L))