21 votes

R convertir une chaîne en vecteur en utilisant " ".

J'ai une corde :

string1 <- "This is my string"

Je voudrais le convertir en un vecteur qui ressemble à ceci :

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

Comment dois-je m'y prendre ? Je sais que je pourrais utiliser le tm pour convertir en termDocumentMatrix puis convertir en matrice, mais les mots seraient classés par ordre alphabétique et j'ai besoin qu'ils restent dans le même ordre.

33voto

Dason Points 18263

Vous pouvez utiliser strsplit pour accomplir cette tâche.

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

14voto

Sacha Epskamp Points 14956

Légèrement différent de Dason, mais cette méthode permet de diviser pour toute quantité d'espace blanc, y compris les nouvelles lignes :

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

5voto

Shiqing Fan Points 639

En complément, nous pouvons également utiliser unlist() pour produire un vecteur à partir d'une structure de liste donnée :

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

4voto

Richard Scriven Points 15577

Si vous voulez simplement extraire des mots en les séparant par des espaces, voici quelques alternatives intéressantes.

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"

1voto

rpierce Points 848

Essayez :

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

C'est une solution trop élaborée pour votre problème. strsplit utilisant l'approche de Sacha est généralement très bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X