2016-06-13 5 views
5

Wie teilt man String in R auf folgende Weise? Schauen Sie sich beispielsweise bitteR, Split-String zu Paaren von Zeichen

example: 

c("ex", "xa", "am", "mp", "pl", "le")?

+2

Vielleicht etwas im Zusammenhang http://stackoverflow.com/questions/2247045/chopping auch -a-string-in-vector-of-fixed-width-character-elements –

Antwort

9
x = "example" 
substring(x, first = 1:(nchar(x) - 1), last = 2:nchar(x)) 
# [1] "ex" "xa" "am" "mp" "pl" "le" 

Sie könnten natürlich, wickeln Sie es in eine Funktion, vielleicht nicht-Buchstaben weglassen (ich weiß nicht, ob der Doppelpunkt sollte ein Teil Ihrer Zeichenfolge oder nicht sein) usw.

lapply(month.name, function(x) substring(x, first = 1:(nchar(x) - 1), last = 2:nchar(x))) 
# [[1]] 
# [1] "Ja" "an" "nu" "ua" "ar" "ry" 
# 
# [[2]] 
# [1] "Fe" "eb" "br" "ru" "ua" "ar" "ry" 
# 
# [[3]] 
# [1] "Ma" "ar" "rc" "ch" 
# ... 

oder in eine benannte Funktion machen und sie mit Namen verwenden:

dies von Strings zu einem Vektor zu tun, können Sie es als eine anonyme Funktion mit lapply verwenden. Dies würde Sinn machen, wenn Sie es etwas häufig verwenden.

str_split_pairs = function(x) { 
    substring(x, first = 1:(nchar(x) - 1), last = 2:nchar(x)) 
} 

lapply(month.name, str_split_pairs) 
## same result as above 
+0

Ok, ich habe einen Vektor von Strings (Zeichen). Wie man davon Vektor solcher Paare bekommt? –

+0

Vielleicht 'lapply'? –

0

Hier ist eine andere Option (obwohl es langsamer ist als @ Gregor Antwort):

x=c("example", "stackoverflow", "programming") 

lapply(x, function(i) { 
    i = unlist(strsplit(i,"")) 
    paste0(i, lead(i))[-length(i)] 
}) 
[[1]] 
[1] "ex" "xa" "am" "mp" "pl" "le" 

[[2]] 
[1] "st" "ta" "ac" "ck" "ko" "ov" "ve" "er" "rf" "fl" "lo" "ow" 

[[3]] 
[1] "pr" "ro" "og" "gr" "ra" "am" "mm" "mi" "in" "ng"