2012-08-13 10 views
12

Ich habe eine Zeichenfolge:R konvertieren String tokenize mit „Vektor“

string1 <- "This is my string" 

Ich möchte es auf einen Vektor konvertieren, die wie folgt aussieht:

vector1 
"This" 
"is" 
"my" 
"string" 

Wie kann ich das tun ? Ich weiß, dass ich das tm Paket verwenden könnte, um zu termDocumentMatrix umzuwandeln und dann zu einer Matrix zu konvertieren, aber es würde die Wörter alphabetisch ordnen und ich brauche sie, um in der gleichen Reihenfolge zu bleiben.

+0

Deron bietet eine gute Lösung, aber wenn Ihr Text komplizierter ist als das (zB Interpunktion usw.), benötigen Sie ein wenig mehr Ansatz. –

+0

möglich duplizieren: http://stackoverflow.com/questions/520810/does-r-have-quote-like-operators-like-perls-qw – GSee

+0

GSee das ist etwas anderes gefragt. screechOwl möchte einen einzelnen Zeichenvektor in Wörter aufteilen, wobei der von Ihnen angegebene Link anzeigt, dass das Poster nicht in Anführungszeichen gesetzte Wörter eingeben soll, die in Zeichen umgewandelt werden. –

Antwort

21

Sie können strsplit verwenden, um diese Aufgabe zu erfüllen.

string1 <- "This is my string" 
strsplit(string1, " ")[[1]] 
#[1] "This" "is"  "my"  "string" 
10

leicht von Dason, aber für jede Menge Leerraum inklusive Zeilenumbrüche aufgeteilt wird:

string1 <- "This is my 
string" 
strsplit(string1, "\\s+")[[1]] 
1

Versuchen:

library(tm) 
library("RWeka") 
library(RWekajars) 
NGramTokenizer(source1, Weka_control(min = 1, max = 1)) 

Es ist eine über technische Lösung für Ihr Problem . strsplit mit Sacha Ansatz ist in der Regel gut.

3

Als Ergänzung können wir auch unlist() verwenden, um einen Vektor aus einer vorgegebenen Liste Struktur zu erzeugen:

string1 <- "This is my string" # get a list structure 
unlist(strsplit(string1, "\\s+")) # unlist the list 
#[1] "This" "is"  "my"  "string" 
2

Wenn Sie einfach Wörter durch Spaltung auf die Räume zu extrahieren, sind hier ein paar schöne Alternativen .

string1 <- "This is my string" 

scan(text = string1, what = "") 
# [1] "This" "is"  "my"  "string" 

library(stringi) 
stri_split_fixed(string1, " ")[[1]] 
# [1] "This" "is"  "my"  "string" 
stri_extract_all_words(string1, simplify = TRUE) 
#  [,1] [,2] [,3] [,4]  
# [1,] "This" "is" "my" "string" 
stri_split_boundaries(string1, simplify = TRUE) 
#  [,1] [,2] [,3] [,4]  
# [1,] "This " "is " "my " "string"