R: Ошибка в UseMethod ("tbl_vars") - PullRequest
0 голосов
/ 23 мая 2018

Итак, я запускаю приведенный ниже код в R Studio и получаю эту ошибку:

Ошибка в UseMethod ("tbl_vars"): нет применимого метода для 'tbl_vars', примененного к объекту класса"персонаж"

Я не знаю, как это исправить, потому что нет функции tbl_vars!Может кто-нибудь помочь?

for (i in 1:ceiling(nrow(reviews)/batch)) {
    row_start <- i*batch-batch+1

    row_end <- ifelse(i*batch < nrow(reviews), i*batch, nrow(reviews))

    print(paste("Processing row", row_start, "to row", row_end))

    reviews[row_start:row_end, ] %>%
        unnest_tokens(word, text) -> reviews_subset

    reviews_subset$row <- 1:nrow(reviews_subset)

    reviews_subset %>%
        anti_join(stopwords) %>%
        arrange(row) -> reviews_subset

    write_feather(reviews_subset, path = paste0("reviews", i, ".txt"))
}

Ps: dplyr установлен.Также другие установленные пакеты: pacman, feather, data.table, devtools, tidyr, tidytext, tokenizer, tibble

Я использую его для работы с набором данных Yelp.

Большое спасибо,Carmem

ps2: пример набора данных (отредактировано и упрощено, чтобы соответствовать здесь):

> dput(as.data.frame(review))

structure(list(user_id = 1:10, review_id = 11:20, business_id = 21:30, 
    stars = c(2L, 2L, 5L, 4L, 4L, 5L, 4L, 3L, 5L, 4L), text = c("Are you the type of person that requires being seen in an expensive, overly pretentious restaurant so that you can wear it as a status symbol?  Or maybe you're a gansta who dresses like CiLo Green and wants to show the hunny's (yes, a group of them out with one man) a night on the town!", 
    "Today was my first visit to the new luna, and I was disappointed-- both because I really liked the old cafe luna, and because the new luna came well recommended", 
    "Stayed here a few months ago and still remember the great service I received.", 
    "I came here for a business lunch from NYC and had a VERY appetizing meal. ", 
    "Incredible food with great flavor. ", 
    "OMG, y'all, try the Apple Pie Moonshine.  It. Is. Seriously. Good.  Smoooooooth.   The best rum that I've sampled so far: Zaya.", 
    "Caitlin is an amazing stylist.  She took time to hear what I had to say before jumping in", 
    "Oh yeah! After some difficulties in securing dinner, my dad and I found ourselves at one of the billion Primanti's locations for a quick feast", 
    "I've been going to this studio since the beginning of January", 
    "The best cannoli, hands down!!"
    )), .Names = c("user_id", "review_id", "business_id", "stars", 
"text"), row.names = c(NA, -10L), class = "data.frame")

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Ошибка

в UseMethod ("tbl_vars"): ни один из применимых методов для сообщения "tbl_vars" ...

не вызван отсутствующим функция tbl_vars .Я столкнулся с той же самой ошибкой, когда я по ошибке передал вектор функции соединения dplyr вместо другого фрейма данных.Вот простой пример того, как сгенерировать эту ошибку в R 3.5, используя dplyr 0.7.5:

library(dplyr)
# Create a dataframe of sales by person and bike color
salesNames = c('Sally', 'Jim', 'Chris', 'Chris', 'Jim',
               'Sally', 'Jim', 'Sally', 'Chris', 'Sally')

salesDates = c('2018-06-01', '2018-06-05', '2018-06-10', '2018-06-15',
               '2018-06-20', '2018-06-25', '2018-06-30', '2018-07-09',
               '2018-07-12', '2018-07-14')

salesColor = c('red', 'red', 'red', 'green', 'red',
               'blue', 'green', 'green', 'green', 'blue')

df_sales = data.frame(Salesperson = salesNames,
                      SalesDate = as.Date(salesDates),
                      BikeColor = salesColor,
                      stringsAsFactors = F)

# Create another dataframe to join to
modelColor = c('red', 'blue', 'green', 'yellow', 'orange', 'black')
modelPrice = c(279.95, 269.95, 264.95, 233.54, 255.27, 289.95)
modelCommission = modelPrice * 0.20

df_commissions = data.frame(ModelColor = modelColor,
                            ModelPrice = modelPrice,
                            Commission = modelCommission,
                            stringsAsFactors = F)

df_sales_comm = df_sales %>% left_join(df_commissions,
                                       by = c('BikeColor'= 'ModelColor'))

Это прекрасно работает.Теперь попробуйте это:

df_comms = df_commissions$ModelColor  # vector instead of dataframe

df_sales_comm2 = df_sales %>% left_join(df_comms,
                                        by = c('BikeColor'= 'ModelColor'))

, и вы должны увидеть точно такую ​​же ошибку, о которой вы сообщаете, потому что df_comms не является датой.Проблема, с которой вы столкнулись, заключается в том, что stopwords является вектором, а не кадром данных (или тибблом).

0 голосов
/ 13 февраля 2019

Существует несколько способов устранения этой ошибки.Как указывает Щепаняк, первопричина пытается передать символьный вектор в операцию, которая ожидает фрейм данных или ошибку.

Вариант 1: преобразовать вектор символов во фрейм данных (или tibble), затем использовать в anti_join.Пример преобразования:

        `stopwords <- tibble(joinColumn = stopwords)`  

Вариант 2: изменить операцию, чтобы принимать символьный вектор.В этом случае мы можем использовать фильтр вместо anti_join, как показано здесь:

         `reviews_subset <- reviews_subset %>%
              filter(!joinColumn %in% stopwords) %>%
              arrange(row) -> reviews_subset`
0 голосов
/ 24 мая 2018

изменить anti_join(stopwords) на anti_join(stop_words).stopwords, вероятно, не существует или не то, что вы хотите, чтобы оно было

...