2012-08-13 59 views
12

我有一個字符串:[R字符串轉換爲記號化使用,以矢量「」

string1 <- "This is my string" 

我想將它轉化成一個向量,看起來像這樣:

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

如何做到這一點?我知道我可以使用tm包來轉換爲termDocumentMatrix,然後轉換爲矩陣,但它會按字母順序排列,我需要它們保持相同的順序。

+0

Dason提供了一個很好的解決方案,但是如果你的文本比這個更復雜(比如標點符號等),你需要一個更強化的方法。 – 2012-08-13 01:15:01

+0

可能的重複:http://stackoverflow.com/questions/520810/does-r-have-quote-like-operators-like-perls-qw – GSee 2012-08-13 01:19:08

+0

GSee這是要求不同的東西。 screechOwl希望將單個字符向量分成單詞,因爲您提供的鏈接表示發佈者希望輸入將被轉換爲字符的未加引號的單詞。 – 2012-08-13 01:25:23

回答

21

您可以使用strsplit來完成此任務。

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

從達誠略有不同,但是這將拆分爲空白,包括換行符的任何金額:

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

嘗試:

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

這是你的問題過工程解決方案。使用Sacha的方法進行分解通常很好。

3

作爲補充,我們也可以使用unlist()從給定的表結構產生矢量:

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