83
##
[,1]
## [1,] "#Paris"
##
## [[2]]
##
[,1]
## [1,] "#Paris"
## [2,] "#Amelie"
##
## [[3]]
##
[,1]
## [1,] "#Paris"
##
## [[4]]
## character(0)
Compared to str
match(), the output of str
match
all() is a list. Note al also that each
element of the list is a matrix with as many rows as hashtag matches. In turn, those elements
that don’t match the pattern are indicated with an empty character vector character(0)
instead of a NA.
6.4.6 Locate rst match with str
locate()
Besides detecting, extracting and matching regex patterns, stringr allows us to locate oc-
curences of patterns. For locating the position of the rst occurence of a pattern in a string
vector, we should use str
locate().
# locate position of (first) hashtag
str_locate(paris_tweets, "#[a-zA-Z]f1,g")
##
start end
## [1,]
1
6
## [2,]
14 19
## [3,]
17 22
## [4,]
NA NA
The output of str
locate() is a matrix with two columns and as many rows as elements in
the (string) vector. The rst column of the output is the start position, while the second
column is the end position.
In the previous example, the result is a matrix with 4 rows and 2 columns. The rst row
corresponds to the hashtag of the rst tweet. It starts at position 1 and ends at position
6. The second row corresponds to the hashtag of the second tweet; its start position is the
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Conversion of pdf into ppt - Library SDK API:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
Conversion of pdf into ppt - Library SDK API:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
84
14th character, and its end position is the 19th character. The fourth row corresponds to the
fourth tweet. Since there are no hashtags the values in that row are NA’s.
6.4.7 Locate all matches with str
locate
all()
To locate not just the rst but all the occurence patterns in a string vector, we should use
str
locate
all():
# locate (all) hashtags in  paris_tweets
str_locate_all(paris_tweets, "#[a-zA-Z]f1,g")
## [[1]]
##
start end
## [1,]
1
6
##
## [[2]]
##
start end
## [1,]
14 19
## [2,]
54 60
##
## [[3]]
##
start end
## [1,]
17 22
##
## [[4]]
##
start end
Compared to str
locate(), the output of str
locate
all() is a list of the same length as
the provided string. Each of the list elements is in turn a matrix with two columns. Those
elements that don’t match the pattern are indicated with an empty character vector instead
of an NA.
Looking at the obtained result from applying str
locate
all() to paris
tweets, you can
see that the second element contains the start and end positions for both hashtags #Paris
and #Amelie. In turn, the fourth element appears empty since its associated tweet contains
no hashtags.
6.4.8 Replace rst match with str
replace()
For replacing therst occurrence ofamatched pattern in astring, wecan use str
replace().
Its usage has the following form:
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library SDK API:Online Convert PowerPoint to PDF file. Best free online export
clicking on the blue button or drag-and-drop your pptx or ppt file into the drop area. Then just wait until the conversion from Powerpoint to PDF is complete
www.rasteredge.com
Library SDK API:VB.NET PowerPoint: Convert & Render PPT into PDF Document
use for fast PPT (.pptx) to PDF conversion in .NET to render selected PowerPoint slide(s) into image source create a featured PPTX to PDF converting application
www.rasteredge.com
85
str_replace(string, pattern, replacement)
In addition to the main 2 inputs of the rest of functions, str
replace() requires a third
argument that indicates the replacement pattern.
Say we have the city names of San Francisco, Barcelona, Naples and Paris in a vector. And
let’s suppose that we want to replace the rst vowel in each name with a semicolon. Here’s
how we can do that:
# city names
cities = c("San Francisco""Barcelona""Naples""Paris")
# replace first matched vowel
str_replace(cities, "[aeiou]"";")
## [1] "S;n Francisco" "B;rcelona"
"N;ples"
"P;ris"
Now, suppose that we want to replace the rst consonant in each name. We just need to
modify the pattern with a negated class:
# replace first matched consonant
str_replace(cities, "[^aeiou]"";")
## [1] ";an Francisco" ";arcelona"
";aples"
";aris"
6.4.9 Replace all matches with str
replace
all()
For replacingalloccurrences of amatched pattern in astring, we can usestr
replace
all().
Once again, consider a vector with some city names, and let’s suppose that we want toreplace
all the vowels in each name:
# city names
cities = c("San Francisco""Barcelona""Naples""Paris")
# replace all matched vowel
str_replace_all(cities, pattern n = "[aeiou]"";")
## [1] "S;n Fr;nc;sc;" "B;rc;l;n;"
"N;pl;s"
"P;r;s"
Alternatively, to replace all consonants with a semicolon in each name, we just need to change
the pattern with a negated class:
# replace all matched consonants
str_replace_all(cities, pattern n = "[^aeiou]"";")
## [1] ";a;;;;a;;i;;o" ";a;;e;o;a"
";a;;e;"
";a;i;"
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library SDK API:How to C#: Convert Word, Excel and PPT to PDF
PPT to PDF. Online C# Tutorial for Converting MS Office Word, Excel and PowerPoint to PDF. MS Office to PDF Conversion Overview. By integrating XDoc.PDF SDK into
www.rasteredge.com
Library SDK API:How to C#: Convert PDF, Excel, PPT to Word
XDoc.Word SDK into your C#.NET project, PDF, MS-Excel and MS-PPT can be converted to Word document. Generally speaking, following conversion types are supported
www.rasteredge.com
86
6.4.10 String splitting with str
split()
Similar to strsplit(), stringr gives us the function str
split() to separate a character
vector into a number of pieces. This function has the following usage:
str_split(string, pattern, n = Inf)
The argument n is the maximum number of pieces to return. The default value (n = Inf)
implies that all possible split positions are used.
Let’s see the same example of strsplit() in which we wish to split up a sentence into
individuals words:
# a sentence
sentence = c("R is s a a collaborative e project t with many contributors")
# split into words
str_split(sentence, " ")
## [[1]]
## [1] "R"
"is"
"a"
"collaborative"
## [5] "project"
"with"
"many"
"contributors"
Likewise, we can break apart the portions of a telephone number by splitting those sets of
digits joined by a dash "-"
# telephone numbers
tels = c("510-548-2238""707-231-2440""650-752-1300")
# split each number into its portions
str_split(tels, "-")
## [[1]]
## [1] "510" "548" "2238"
##
## [[2]]
## [1] "707" "231" "2440"
##
## [[3]]
## [1] "650" "752" "1300"
The result is a list of character vectors. Each element of the string vector corresponds to an
element in the resulting list. In turn, each of the list elements will contain the split vectors
(i.e. number of pieces) occurring from the matches.
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library SDK API:C# TIFF: Learn to Convert MS Word, Excel, and PPT to TIFF Image
C# TIFF - Conversion from Word, Excel, PPT to TIFF. is quiet easy to integrate this SDK into your C# directly use them in your project for fast file conversion.
www.rasteredge.com
Library SDK API:C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
Read: PDF Image Extract; VB.NET Write: Insert text into PDF; PDF Convert: How to Convert MS PPT to Adobe Provide Free Demo Code for PDF Conversion from Microsoft
www.rasteredge.com
87
In order to show the use of the argument n, let’s consider a vector with  avors "chocolate",
"vanilla", "cinnamon", "mint", and "lemon". Suppose we want to split each  avor name
dening as pattern the class of vowels:
# string
flavors = c("chocolate""vanilla""cinnamon""mint""lemon")
# split by vowels
str_split(flavors, "[aeiou]")
## [[1]]
## [1] "ch" "c" "l" "t" ""
##
## [[2]]
## [1] "v" "n" "ll" ""
##
## [[3]]
## [1] "c" "nn" "m" "n"
##
## [[4]]
## [1] "m" "nt"
##
## [[5]]
## [1] "l" "m" "n"
Now let’s modify the maximum number of pieces to n = 2. This means that str
split()
will split each element into a maximum of 2 pieces. Here’s what we obtain:
# split by first vowel
str_split(flavors, "[aeiou]", n n = = 2)
## [[1]]
## [1] "ch"
"colate"
##
## [[2]]
## [1] "v"
"nilla"
##
## [[3]]
## [1] "c"
"nnamon"
##
## [[4]]
## [1] "m" "nt"
##
## [[5]]
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library SDK API:VB.NET PowerPoint: PPTX to SVG Conversion; Render PPT to Vector
high-quality PPT (.pptx) to svg conversion in both be easily converted and rendered into svg image powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
Library SDK API:VB.NET PowerPoint: Convert PowerPoint to BMP Image with VB PPT
converters, such as VB.NET PDF Converter, Excel VB.NET PPT converting library: As batch conversion is also to render PPT document page into RasterEdge-defined
www.rasteredge.com
88
## [1] "l"
"mon"
6.4.11 String splitting with str
split
fixed()
In addition to str
split(), there is also the str
split
fixed() function that splits up a
string into a xed number of pieces. Its usage has the following form:
str_split_fixed(string, pattern, n)
Note that the argument n does not have a default value. In other words, we need to specify
an integer to indicate the number of pieces.
Consider again the same vector of flavors, and the letter "n" as the pattern to match. Let’s
see the behavior of str
split
fixed() with n = 2.
# string
flavors = c("chocolate""vanilla""cinnamon""mint""lemon")
# split flavors into 2 pieces
str_split_fixed(flavors, "n", 2)
##
[,1]
[,2]
## [1,] "chocolate" ""
## [2,] "va"
"illa"
## [3,] "ci"
"namon"
## [4,] "mi"
"t"
## [5,] "lemo"
""
As you can tell, the output is a character matrix with as many columns as n = 2. Since
"chocolate" does not contain any letter "n", its corresponding value in the second column
remains empty "". In contrast, the value of the second column associated to "lemon" is also
empty. But this is because this  avor is split up into "lemo" and "".
If we change the value n = 3, we will obtain a matrix with three columns:
# split favors into 3 pieces
str_split_fixed(flavors, "n", 3)
##
[,1]
[,2]
[,3]
## [1,] "chocolate" ""
""
## [2,] "va"
"illa" ""
## [3,] "ci"
""
"amon"
## [4,] "mi"
"t"
""
## [5,] "lemo"
""
""
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Library SDK API:.NET PDF Document Viewing, Annotation, Conversion & Processing
Convert. Convert Word/Excel/PPT to PDF. Convert PDF to Word (.docx). PDF Write. Insert text, text box into PDF. Edit, delete text from PDF. Insert images into PDF
www.rasteredge.com
Chapter 7
Practical Applications
This chapter is dedicated to show some practical examples that involve handling and pro-
cessing strings in R. The main idea is to put in practice all the material covered so far and
get a grasp of the variety of things we can do in R.
We will describe four typical examples. The examples are not exhaustive but just represen-
tative:
1. reversing a string
2. matching email addresses
3. matching html elements (href’s and img’s anchors)
4. some stats and analytics of character data
7.1 Reversing a string
Our rst example has to do with reversing a character string. More precisely, the objective
is to create a function that takes a string and returns it in reversed order. The trick of this
exercise depends on what we understand with the term reversing. For some people, reversing
may be understood as simply having the set of characters in reverse order. For other people
instead, reversing may be understood as having a set of words in reverse order. Can you see
the distinction?
Let’s consider the following two simple strings:
 "atmosphere"
 "the big bang theory"
89
90
The rst string is formed by one single word (atmosphere). The second string is formed
by a sentence with four words (the big bang theory). If we were to reverse both strings by
characters we would get the following results:
 "erehpsomta"
 "yroeht gnab gib eht"
Conversely, if we were to reverse the strings by words, we would obtain the following output:
 "atmosphere"
 "theory bang big the"
For this example we will implement a function for each type of reversing operation.
7.1.1 Reversing a string by characters
The rst case for reversing a string is to do it by characters. This implies that we need to
split a given string into its dierent characters, and then we need to concatenate them back
together in reverse order. Let’s try to write a rst function:
# function that reverses a string by characters
reverse_chars <- function(string)
f
# split string by characters
string_split = strsplit(string, split = "")
# reverse order
rev_order = nchar(string):1
# reversed characters
reversed_chars = string_split[[1]][rev_order]
# collapse reversed characters
paste(reversed_chars, collapse="")
g
Let’s test our reversing function with a character and numeric vectors:
# try  reverse_chars
reverse_chars("abcdefg")
## [1] "gfedcba"
# try with non-character input
reverse_chars(12345)
## Error: non-character argument
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
91
As you can see, reverse
chars() works ne when the input is in "character" mode. How-
ever, it complains when the input is "non-character". In order to make our function more
robust, we can force the input to be converted as character. The resulting code is given as:
# reversing a string by characters
reverse_chars <- function(string)
f
string_split = strsplit(as.character(string), split = "")
reversed_split = string_split[[1]][nchar(string):1]
paste(reversed_split, collapse="")
g
Now if we try our modied function, we get the expected results:
# example with one word
reverse_chars("atmosphere")
## [1] "erehpsomta"
# example with a several words
reverse_chars("the big bang theory")
## [1] "yroeht gnab gib eht"
Moreover, it also works with non-character input:
# try  reverse_chars
reverse_chars("abcdefg")
## [1] "gfedcba"
# try with non-character input
reverse_chars(12345)
## [1] "54321"
If we want to use our function with a vector (more than one element), we can combine it
with the lapply() function as follows:
# reverse vector (by characters)
lapply(c("the big bang theory""atmosphere"), reverse_chars)
## [[1]]
## [1] "yroeht gnab gib eht"
##
## [[2]]
## [1] "erehpsomta"
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
92
7.1.2 Reversing a string by words
The second type of reversing operation is to reverse a string by words. In this case the
procedure involves splitting up a string by words, re-arrange them in reverse order, and
paste them back in one sentence. Here’s how we can dened our reverse
words() function:
# function that reverses a string by words
reverse_words <- function(string)
f
# split string by blank spaces
string_split = strsplit(as.character(string), split = " ")
# how many split terms?
string_length = length(string_split[[1]])
# decide what to do
if (string_length == 1) ) f
# one word (do nothing)
reversed_string = string_split[[1]]
g else f
# more than one word (collapse them)
reversed_split = string_split[[1]][string_length:1]
reversed_string = paste(reversed_split, collapse = " ")
g
# output
return(reversed_string)
g
The rst step inside reverse
words() is to split the string according to a blank space
pattern " ". Then we are counting the number of components resulting from the splitting
step. Based on this information there are two options. If there is only one word, then there
is nothing to do. If we have more than one words, then we need to re-arrenge them in reverse
order and collapse them in a single string.
Once we have dened our function, we can try it on the two string examples to check that it
works as expected:
# examples
reverse_words("atmosphere")
## [1] "atmosphere"
reverse_words("the big bang theory")
## [1] "theory bang big the"
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Documents you may be interested
Documents you may be interested