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
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
Ihre text
Spalte ist wahrscheinlich ein Datenrahmen selbst mit einer einzelnen text
Spalte:
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"