我有一个字符串:
string1 <- "This is my string"
我想将其转换为如下所示的矢量:
vector1
"This"
"is"
"my"
"string"
我该怎么做?我知道我可以使用tm
包转换为termDocumentMatrix
,然后转换为矩阵,但它会按字母顺序排列,我需要它们保持相同的顺序。
答案 0 :(得分:24)
您可以使用strsplit来完成此任务。
string1 <- "This is my string"
strsplit(string1, " ")[[1]]
#[1] "This" "is" "my" "string"
答案 1 :(得分:10)
与Dason略有不同,但这会分裂为任何数量的空白区域,包括换行符:
string1 <- "This is my
string"
strsplit(string1, "\\s+")[[1]]
答案 2 :(得分:3)
作为补充,我们还可以使用unlist()
从给定的列表结构中生成一个向量:
string1 <- "This is my string" # get a list structure
unlist(strsplit(string1, "\\s+")) # unlist the list
#[1] "This" "is" "my" "string"
答案 3 :(得分:2)
如果你只是通过分割空格来提取单词,这里有几个不错的选择。
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"
答案 4 :(得分:1)
尝试:
library(tm)
library("RWeka")
library(RWekajars)
NGramTokenizer(source1, Weka_control(min = 1, max = 1))
这是一个针对您的问题的过度设计的解决方案。 strsplit使用Sacha的方法通常都很好。