21

我有一个字符串:

string1 <- "This is my string"

我想将其转换为如下所示的向量:

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

我该怎么做呢?我知道我可以使用tm包转换为termDocumentMatrix然后转换为矩阵,但它会按字母顺序排列单词,我需要它们保持相同的顺序。

4

5 回答 5

33

您可以使用 strsplit 来完成此任务。

string1 <- "This is my string"
strsplit(string1, " ")[[1]]
#[1] "This"   "is"     "my"     "string"
于 2012-08-13T01:06:16.213 回答
14

与 Dason 略有不同,但这将拆分为任意数量的空白,包括换行符:

string1 <- "This   is my
string"
strsplit(string1, "\\s+")[[1]]
于 2012-08-13T09:05:16.600 回答
5

作为补充,我们还可以使用unlist()给定列表结构生成向量:

string1 <- "This is my string"  # get a list structure
unlist(strsplit(string1, "\\s+"))  # unlist the list
#[1] "This"   "is"     "my"     "string"
于 2015-01-01T06:48:10.093 回答
4

如果您只是通过分割空格来提取单词,这里有几个不错的选择。

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" 
于 2015-01-01T07:33:21.160 回答
1

尝试:

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

这是针对您的问题的过度设计的解决方案。strsplit 使用 Sacha 的方法通常很好。

于 2013-08-11T20:24:48.297 回答