2014-07-14 12 views
15

herhangi sayısına göre bir dize aşağıdaki dizesi vardır:Bölünmüş boşluklar

[1] "10012  ----  ----  ----  ----  CAB UNCH     CAB" 

Ben boşluklar tarafından bu dize bölmek istiyorum, ama boşluklar boşluklar değişken sayıda var. strsplit() işlevinin bu dizeyi bölmek ve tüm boşlukları temizlemiş 8 öğenin bir vektörünü döndürmek için bir yolu var mı?

Bir satır kod tercih edilir.

+6

'read.table (text = yourstring)'? – Henrik

cevap

24

Sadece üzerinde bölmek \\s+ ile strsplit kullanın: bu durumda,

x <- "10012  ----  ----  ----  ----  CAB UNCH  CAB" 
x 
# [1] "10012  ----  ----  ----  ----  CAB UNCH  CAB" 
strsplit(x, "\\s+")[[1]] 
# [1] "10012" "----" "----" "----" "----" "CAB" "UNCH" "CAB" 
length(.Last.value) 
# [1] 8 

Veya, scan da çalışır:

scan(text = x, what = "") 
# Read 8 items 
# [1] "10012" "----" "----" "----" "----" "CAB" "UNCH" "CAB" 
7

strsplit işlevi kendisini sadece strsplit(ss, " +") kullanarak, çalışır:

ss = "10012  ----  ----  ----  ----  CAB UNCH     CAB" 

strsplit(ss, " +") 
[[1]] 
[1] "10012" "----" "----" "----" "----" "CAB" "UNCH" "CAB" 

HTH