2014-08-29 62 views
0

我想分割一個字符串,然後將它傳遞給列表。在R中拆分字符串並分配給列表

對於前:

string <- "hi hello" 

分開後,並把到一個名爲l列表,然後l[1]應該給我hil[2]應該給我hello

試圖很難搜索先前的問題,但找不到這個。

+0

這已經被覆蓋在這個網站無數次:'→< - strsplit(字符串,「「)[[1]]'應該這樣做。 – A5C1D2H2I1M1N2O1R2T1 2014-08-29 15:52:24

回答

1

在這裏,你有它

> l <- strsplit(string, " ")[[1]] 
[1] "hi" "hello" 
> l[1] 
[1] "hi" 
> l[2] 
[1] "hello" 
+0

最後的意思是什麼?[[1]]? – 2014-08-29 15:59:26

+0

@AvinashRaj,'strsplit'是矢量化的,並返回一個「list」,其長度與輸入向量相同,並且在該列表項中有分割項。由於這是一個單獨的向量被拆分,爲了將其平鋪到一個單獨的向量中,您可以直接使用'[[1]]'來訪問它。 – A5C1D2H2I1M1N2O1R2T1 2014-08-29 16:04:56

+0

感謝您的解釋... – 2014-08-29 16:49:32

0

對有分隔的字符串成單獨的列表。

string <- "hi hello" 
l <- lapply(unlist(strsplit(string, split= " ")), FUN = function(x) x) 

[[1]] 
[1] "hi" 

[[2]] 
[1] "hello" 
+0

嗯...爲什麼不只是'as.list(unlist(strsplit(string,「」)))'如果這是您認爲他們的輸出? – A5C1D2H2I1M1N2O1R2T1 2014-08-29 15:57:27

+0

@AnandaMahto,夠公平,代碼稍短但結果相同。 Mind只是去了'lapply',但'as.list'更簡潔。 – cdeterman 2014-08-29 15:59:10

+0

謝謝大家的答案。 – 2014-08-30 02:23:01

0

哦,究竟發生了什麼....

要採取完全不同的方法,因爲你是在分裂的空間,你也可以很容易地使用scan

l <- scan(what = "", text = string) 
# Read 2 items 
l[1] 
# [1] "hi" 
l[2] 
# [1] "hello" 

注意如果這是你想要的,你的術語是關閉的。在R中,這是一個vector。如果您需要list,請將scan換成as.list

1

這是另一種選擇。而不是split婷,匹配你想要的。

> x <- 'hi hello' 
> l <- regmatches(x, gregexpr('\\S+', x))[[1]] 
> l[1] 
## [1] "hi" 
> l[2] 
## [1] "hello" 
0

嘗試:

l = unlist(strsplit(string, ' ')) 

l[1] 
[1] "hi" 

l[2] 
[1] "hello" 
+1

現在,這些答案已經失去控制...... – A5C1D2H2I1M1N2O1R2T1 2014-08-29 16:16:58

+0

OP只需要一個給出l [1]和l [2]的適當值的對象l。 – rnso 2014-08-29 16:19:24