2014-07-14 25 views
15

Mam następujący ciąg:podzielić ciąg przez dowolną liczbę pomieszczeń

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

Chcę podzielić ten ciąg przez luki, ale luki mieć zmienną liczbę miejsc. Czy istnieje sposób użycia funkcji strsplit() do podziału tego ciągu i zwrócenia wektora 8 elementów, które usunęły wszystkie luki?

Preferowana jest jedna linia kodu.

+6

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

Odpowiedz

24

Wystarczy użyć strsplit z \\s+ podzielić na:

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 

Lub, w tym przypadku, scan działa również: Sama funkcja

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

strsplit działa, po prostu za pomocą strsplit(ss, " +"):

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

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

HTH

Powiązane problemy