2012-08-13 5 views
12

que tienen una cadena:R convertir la serie al vector tokenize usando ""

string1 <- "This is my string" 

me gustaría convertirlo en un vector que tiene este aspecto:

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

¿Cómo hago esto ? Sé que podría usar el paquete tm para convertirlo a termDocumentMatrix y luego convertirlo a una matriz, pero alfabetizaría las palabras y las necesito para mantenerme en el mismo orden.

+0

Dason proporciona una buena solución pero si su texto es más complicado que eso (es decir, signos de puntuación, etc.) necesitará un enfoque un poco más mejorado. –

+0

posible duplicado: http://stackoverflow.com/questions/520810/does-r-have-quote-like-operators-like-perls-qw – GSee

+0

GSee que está pidiendo algo diferente. screechOwl quiere dividir un único vector de caracteres en palabras, donde como el enlace que proporciona indica que el póster desea ingresar palabras sin comillas que se convertirán en caracteres. –

Respuesta

21

Puede usar strsplit para realizar esta tarea.

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

ligeramente diferente de Dason, pero esto dividirá por cualquier cantidad de espacio que incluye saltos de línea blanca:

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

Probar:

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

Es una solución más de ingeniería para su problema . strsplit usando el enfoque de Sacha generalmente está bien.

3

Como complemento, también podemos utilizar unlist() para producir un vector de una estructura de lista dada:

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

Si sólo va a extraer las palabras mediante la división de los espacios, aquí hay un par de buenas alternativas .

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" 
Cuestiones relacionadas