Код dplyr работал, сейчас нет, и я не уверен, почему - PullRequest
1 голос
/ 25 апреля 2019

Я написал код около недели назад, он работал отлично, но теперь он перестал работать. Я обновил пакет 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)

Результатом, который я использовал, было количество людей, ответивших положительно, отрицательно или нейтрально на переменную, называемую «эко», например ::10000

     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 Ответ

2 голосов
/ 25 апреля 2019

При отображении «данных» 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

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))
...