Fehler in check_input (x): Die Eingabe muss ein Zeichenvektor beliebiger Länge oder eine Liste von Zeichenvektoren sein, von denen jeder eine Länge von 1 hat


LG3555

Mit dem tidytext-Paket möchte ich mein tibble in ein Token pro Dokument pro Zeile umwandeln. Ich habe die Textspalte meines Tibbles von Faktor zu Zeichen geändert, erhalte aber immer noch den gleichen Fehler.

text_df <- tibble(line = 1:3069, text = text)

Mein Tibble sieht so aus, mit einer Spalte als Zeichen:

# A tibble: 3,069 x 2
line text$text  
<int> <chr> 

Wenn ich jedoch versuche, unnest_tokens anzuwenden:

text_df %>%
  unnest_tokens(word, text$text)

Ich bekomme immer den gleichen Fehler:

Fehler in check_input (x): Die Eingabe muss ein Zeichenvektor beliebiger Länge oder eine Liste von Zeichenvektoren sein, von denen jeder eine Länge von 1 hat.

Was ist das Problem in meinem Code?

PS: Ich habe mir verschiedene Beiträge zum Thema angesehen, aber kein Glück.

Vielen Dank

Moody_Mudskipper

Ihre textSpalte ist wahrscheinlich ein Datenrahmen selbst mit einer einzelnen textSpalte:

library(tibble)
library(dplyr,warn.conflicts = FALSE)
library(tidytext)

text <- data.frame(text= c("hello world", "this is me"), stringsAsFactors = FALSE)
text_df <- tibble(line = 1:2, text = text)

text_df
#> # A tibble: 2 x 2
#>    line text$text  
#>   <int> <chr>      
#> 1     1 hello world
#> 2     2 this is me

text_df %>% 
  unnest_tokens(word, text$text)

Fehler in check_input (x):

Die Eingabe muss ein Zeichenvektor beliebiger Länge oder eine Liste von Zeichenvektoren sein, von denen jeder eine Länge von 1 hat.

Ändern Sie es, um die Textspalte zu extrahieren, und fahren Sie fort:

text_df <- mutate(text_df, text = text$text)
# or if your text is stored as factor
# text_df <- mutate(text_df, text = as.character(text$text))

text_df
#> # A tibble: 2 x 2
#>    line text       
#>   <int> <chr>      
#> 1     1 hello world
#> 2     2 this is me

text_df %>% 
  unnest_tokens(word, text)
#> # A tibble: 5 x 2
#>    line word 
#>   <int> <chr>
#> 1     1 hello
#> 2     1 world
#> 3     2 this 
#> 4     2 is   
#> 5     2 me

Es ist eine gute Idee zu verwenden str(), oder manchmal summary(), names()oder unclass()diese Art von Problemen zu diagnostizieren:

text <- data.frame(text= c("hello world", "this is me"), stringsAsFactors = FALSE)
text_df <- tibble(line = 1:2, text = text)
str(text_df)
#> Classes 'tbl_df', 'tbl' and 'data.frame':    2 obs. of  2 variables:
#>  $ line: int  1 2
#>  $ text:'data.frame':    2 obs. of  1 variable:
#>   ..$ text: chr  "hello world" "this is me"

Verwandte Artikel