2017-09-21 9 views
0

Je travaille sur un projet R. L'ensemble de données que j'ai utilisé est disponible au lien suivant https://www.kaggle.com/ranjitha1/hotel-reviews-city-chennai/dataComment résoudre l'erreur suivante? L'entrée doit être un vecteur de caractère de n'importe quelle longueur ou une liste de vecteurs de caractères, chacun ayant une longueur de 1.

Le code que j'ai utilisé est.

df1 = read.csv("chennai.csv", header = TRUE) 
library(tidytext) 
tidy_books <- df1 %>% unnest_tokens(word,Review_Text) 

Ici Review_Text est la colonne de texte. Pourtant, j'ai l'erreur suivante.

Error in check_input(x) : 
Input must be a character vector of any length or a list of character 
vectors, each of which has a length of 1. 
+1

Vous devez 'stringsAsFactors = FALSE' dans votre déclaration' read.csv'. Ou utilisez 'read_csv' car vous semblez travailler dans le tidyverse. –

+0

Ce que j'étais sur le point de dire mais d'une manière plus compacte. Pensez à vérifier la structure des nouvelles données bien avant de travailler dessus, c'est-à-dire 'str (df1)', cela vous aurait également alerté sur le problème – Visser

Répondre

6

stringsAsFactors frappe à nouveau!

Votre colonne Review_Text est un facteur, pas un vecteur de caractères comme le message d'erreur indique que la fonction nécessite.

Je recommande fortement d'utiliser readr::read_csv sur le read.csv par défaut car il est plus rapide et ses défauts ne causent pas ce problème. Dans le cas contraire, vient de mettre à stringsAsFactorsFALSE et vous êtes bon:

> tidytext::unnest_tokens(readr::read_csv("chennai_reviews.csv"), word, Review_Text) 
Parsed with column specification: 
cols(
    Hotel_name = col_character(), 
    Review_Title = col_character(), 
    Review_Text = col_character(), 
    Sentiment = col_character(), 
    Rating_Percentage = col_character(), 
    X6 = col_integer(), 
    X7 = col_integer(), 
    X8 = col_character(), 
    X9 = col_character() 
) 
Warning: 1 parsing failure. 
row # A tibble: 1 x 5 col  row col expected                          actual expected <int> <chr>  <chr>                          <chr> actual 1 2262 X7 an integer "Expedia Booking availability was , only for Non- AC ; ON REQUEST OVER PHONE got it.\n\nRecommended" file # ... with 1 more variables: file <chr> 

# A tibble: 179,883 x 9 
      Hotel_name       Review_Title Sentiment Rating_Percentage X6 X7 X8 X9  word 
       <chr>         <chr>  <chr>    <chr> <int> <int> <chr> <chr>  <chr> 
1 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  its 
2 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  really 
3 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  nice 
4 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  place 
5 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>   to 
6 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  stay 
7 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA> especially 
8 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  for 
9 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA> business 
10 Accord Metropolitan Excellent comfortableness during stay   3    100 NA NA <NA> <NA>  and 
# ... with 179,873 more rows 
Warning message: 
Missing column names filled in: 'X6' [6], 'X7' [7], 'X8' [8], 'X9' [9] 

ou

> tidytext::unnest_tokens(read.csv("chennai_reviews.csv", stringsAsFactors = FALSE), word, Review_Text) 
               Hotel_name 
1          Accord Metropolitan 
                                                                 Review_Title 
...snip... 
+1

merci !! Ça a marché –