33
## [1] 1 2 3 4 5
3.3 Basic String Manipulations
Besides creating and printing strings, there are a number of very handy functions in R
for doing some basic manipulation of strings. In this section we will review the following
functions:
Manipulation of strings
Function
Description
nchar()
number of characters
tolower()
convert to lower case
toupper()
convert to upper case
casefold()
case folding
chartr()
character translation
abbreviate() abbreviation
substring()
substrings of a character vector
substr()
substrings of a character vector
3.3.1 Count number of characters with nchar()
One of the main functions for manipulating character strings is nchar() which counts the
number of characters in a string. In other words, nchar() provides the \length" of a string:
# how many characters?
nchar(c("How""many""characters?"))
## [1] 3 4 11
# how many characters?
nchar("How many characters?")
## [1] 20
Notice that the white spaces between words in the second example are also counted as
characters.
It is important not toconfuse nchar() with length(). Whiletheformergives usthe number
of characters, the later only gives the number of elements in a vector.
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Convert pdf file to ppt online - software SDK dll: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
Convert pdf file to ppt online - software SDK dll: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
34
# how many elements?
length(c("How""many""characters?"))
## [1] 3
# how many elements?
length("How many characters?")
## [1] 1
3.3.2 Convert to lower case with tolower()
Rcomeswith three functions fortextcasefolding. Therst function we’ll discussis tolower()
which converts any upper case characters into lower case:
# to lower case
tolower(c("aLL ChaRacterS S in n LoweR caSe""ABCDE"))
## [1] "all characters in lower case" "abcde"
3.3.3 Convert to upper case with toupper()
The opposite function of tolower() is toupper. As you may guess, this function converts
any lower case characters into upper case:
# to upper case
toupper(c("All ChaRacterS S in n Upper Case""abcde"))
## [1] "ALL CHARACTERS IN UPPER CASE" "ABCDE"
3.3.4 Upper or lower case conversion with casefold()
The third function for case-folding is casefold() which is a wraper for both tolower() and
toupper(). Its uasge has the following form:
casefold(x, upper = FALSE)
By default, casefold() converts all characters to lower case, but we can use the argument
upper = TRUE to indicate the opposite (characters in upper case):
# lower case folding
casefold("aLL ChaRacterS in LoweR caSe")
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
software SDK dll:Online Convert PowerPoint to PDF file. Best free online export
Online Powerpoint to PDF Converter. Download Free Trial. Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue
www.rasteredge.com
software SDK dll:How to C#: Convert PDF, Excel, PPT to Word
Program.RootPath + "\\" Output.docx"; // Load a PDF document How to C#: Convert Excel to Word. RootPath + "\\" Output.docx"; // Load an Excel (.xlsx) file.
www.rasteredge.com
35
## [1] "all characters in lower case"
# upper case folding
casefold("All ChaRacterS in Upper Case", upper r = = TRUE)
## [1] "ALL CHARACTERS IN UPPER CASE"
3.3.5 Character translation with chartr()
There’s also the function chartr() which stands for character translation. chartr() takes
three arguments: an old string, a new string, and a character vector x:
chartr(old, new, x)
The way chartr() works is by replacing the characters in old that appear in x by those
indicated in new. For example, suppose we want to translate the letter ’a’ (lower case) with
’A’ (upper case) in the sentence x:
# replace  a  by  A
chartr("a""A""This is s a a boring string")
## [1] "This is A boring string"
It is important to note that old and new must have the same number of characters, otherwise
you will get a nasty error message like this one:
# incorrect use
chartr("ai""X""This is s a a bad example")
## Error: ’old’ is longer than ’new’
Here’s a more interesting example with old = "aei" and new = "#!?". This implies that
any ’a’ in ’x’ will be replaced by ’#’, any ’e’ in ’x’ will be replaced by ’?’, and any ’i
in ’x’ will be replaced by ’?’:
# multiple replacements
crazy = c("Here s to o the e crazy y ones""The misfits""The rebels")
chartr("aei""#!?", crazy)
## [1] "H!r! s to th! cr#zy on!s" "Th! m?sf?ts"
## [3] "Th! r!b!ls"
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
software SDK dll:How to C#: Convert Word, Excel and PPT to PDF
Online C# Tutorial for Converting MS Office Word, Excel and How to C#: Convert PPT to PDF. sample code may help you with converting PowerPoint to PDF file.
www.rasteredge.com
software SDK dll:C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
performance PDF conversion from Microsoft PowerPoint (.ppt and .pptx FILE_TYPE_UNSUPPORT: Console.WriteLine("Fail: can not convert to PDF, file type unsupport
www.rasteredge.com
36
3.3.6 Abbreviate strings with abbreviate()
Another useful function for basic manipulation of character strings is abbreviate(). Its
usage has the following structure:
abbreviate(names.org, minlength = 4, dot = FALSE, strict = FALSE,
method = c("left.keep", "both.sides"))
Although there areseveralarguments, themain parameter isthe character vector (names.org)
which will contain the names that we want to abbreviate:
# some color names
some_colors = colors()[1:4]
some_colors
## [1] "white"
"aliceblue"
"antiquewhite" "antiquewhite1"
# abbreviate (default usage)
colors1 = abbreviate(some_colors)
colors1
##
white
aliceblue antiquewhite antiquewhite1
##
"whit"
"alcb"
"antq"
"ant1"
# abbreviate with  minlength
colors2 = abbreviate(some_colors, minlength = 5)
colors2
##
white
aliceblue antiquewhite antiquewhite1
##
"white"
"alcbl"
"antqw"
"antq1"
# abbreviate
colors3 = abbreviate(some_colors, minlength = 3, method = "both.sides")
colors3
##
white
aliceblue antiquewhite antiquewhite1
##
"wht"
"alc"
"ant"
"an1"
3.3.7 Replace substrings with substr()
One common operation when working with strings is the extraction and replacement of
some characters. For such tasks we have the function substr() which extracts or replaces
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
software SDK dll:C# TIFF: Learn to Convert MS Word, Excel, and PPT to TIFF Image
Excel, PPT to TIFF. Learn How to Change MS Word, Excel, and PowerPoint to TIFF Image File in C#. Overview for MS Office to TIFF Conversion. In order to convert
www.rasteredge.com
software SDK dll:VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
slide, extract slides and merge/split PPT file without depending control add-on can do PPT creating, loading & profession imaging controls, PDF document, image
www.rasteredge.com
37
substrings in a character vector. Its usage has the following form:
substr(x, start, stop)
xis a character vector, start indicates the rst element to be replaced, and stop indicates
the last element to be replaced:
# extract  bcd
substr("abcdef", 2, , 4)
## [1] "bcd"
# replace 2nd letter with hash symbol
x = c("may""the""force""be""with""you")
substr(x, 2, 2) ) <- "#"
x
## [1] "m#y"
"t#e"
"f#rce" "b#"
"w#th" "y#u"
# replace 2nd and 3rd letters with happy face
y = c("may""the""force""be""with""you")
substr(y, 2, 3) ) <- ":)"
y
## [1] "m:)"
"t:)"
"f:)ce" "b:"
"w:)h" "y:)"
# replacement with recycling
z = c("may""the""force""be""with""you")
substr(z, 2, 3) ) <- c("#""@")
z
## [1] "m#y"
"t@e"
"f#rce" "b@"
"w#th" "y@u"
3.3.8 Replace substrings with substring()
Closely related to substr(), the function substring() extracts or replaces substrings in a
character vector. Its usage has the following form:
substring(text, first, last = 1000000L)
text is a charactervector, first indicates the rst element to bereplaced, and last indicates
the last element to be replaced:
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
software SDK dll:Online Convert PDF file to Word. Best free online PDF Conversion
Online PDF to Word Converter. Download Free Trial. Convert a PDF File to Word. Just upload your file by clicking on the blue button
www.rasteredge.com
software SDK dll:VB.NET PowerPoint: Use PowerPoint SDK to Create, Load and Save PPT
Save PPT File. Contrary to PowerPoint document inputting and loading, users can certainly export and save the PPT file after the creating or editing.
www.rasteredge.com
38
# same as  substr
substring("ABCDEF", 2, 4)
## [1] "BCD"
substr("ABCDEF", 2, , 4)
## [1] "BCD"
# extract each letter
substring("ABCDEF", 1:6, 1:6)
## [1] "A" "B" "C" "D" "E" "F"
# multiple replacement with recycling
text = c("more""emotions""are""better""than""less")
substring(text, 1:3) <- c(" ""zzz")
text
## [1] " ore"
"ezzzions" "ar "
"zzzter"
"t an"
"lezz"
3.4 Set Operations
Rhas dedicated functions for performing set operations on two given vectors. This implies
that we can apply functions such as set union, intersection, dierence, equality and member-
ship, on "character" vectors.
Set Operations
Function
Description
union()
set union
intersect()
intersection
setdiff()
set dierence
setequal()
equal sets
identical()
exact equality
is.element() is element
%in%()
contains
sort()
sorting
paste(rep()) repetition
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
39
3.4.1 Set union with union()
Let’s start our reviewing of set functions with union(). As its name indicates, we can use
union() when we want to obtain the elements of the union between two character vectors:
# two character vectors
set1 = c("some""random""words""some")
set2 = c("some""many""none""few")
# union of set1 and set2
union(set1, set2)
## [1] "some"
"random" "words" "many"
"none"
"few"
Notice that union() discards any duplicated values in the provided vectors. In the previous
example the word "some" appears twice inside set1 but it appears only once in the union.
In fact all the set operation functions will discard any duplicated values.
3.4.2 Set intersection with intersect()
Set intersection is performed with the function intersect(). We can use this function when
we wish to get those elements that are common to both vectors:
# two character vectors
set3 = c("some""random""few""words")
set4 = c("some""many""none""few")
# intersect of set3 and set4
intersect(set3, set4)
## [1] "some" "few"
3.4.3 Set dierence with setdiff()
Related to the intersection, we might be interested in getting the dierence of the elements
between two character vectors. This can be done with setdiff():
# two character vectors
set5 = c("some""random""few""words")
set6 = c("some""many""none""few")
# difference between set5 and set6
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
40
setdiff(set5, set6)
## [1] "random" "words"
3.4.4 Set equality with setequal()
The function setequal() allows us to test the equality of two character vectors. If the
vectors contain the same elements, setequal() returns TRUE (FALSE otherwise)
# three character vectors
set7 = c("some""random""strings")
set8 = c("some""many""none""few")
set9 = c("strings""random""some")
# set7 == set8?
setequal(set7, set8)
## [1] FALSE
# set7 == set9?
setequal(set7, set9)
## [1] TRUE
3.4.5 Exact equality with identical()
Sometimes setequal() is not always what we want to use. It might be the case that we want
to test whether two vectors are exactly equal (element by element). For instance, testing if
set7 is exactly equal to set9. Although both vectors contain the same set of elements, they
are not exactly the same vector. Such test can be performed with the function identical()
# set7 identical to set7?
identical(set7, set7)
## [1] TRUE
# set7 identical to set9?
identical(set7, set9)
## [1] FALSE
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
41
If we consult the help documentation of identical(), we can see that this function is the
\safe and reliable way to test two objects for being exactly equal".
3.4.6 Element contained with is.element()
If we wish to test if an element is contained in a given set of character strings we can do so
with is.element():
# three vectors
set10 = c("some""stuff""to""play""with")
elem1 = "play"
elem2 = "crazy"
# elem1 in set10?
is.element(elem1, set10)
## [1] TRUE
# elem2 in set10?
is.element(elem2, set10)
## [1] FALSE
Alternatively, we can use the binary operator %in% to test if an element is contained in a
given set. The function %in% returns TRUE if the rst operand is contained in the second,
and it returns FALSE otherwise:
# elem1 in set10?
elem1 %in% set10
## [1] TRUE
# elem2 in set10?
elem2 %in% set10
## [1] FALSE
3.4.7 Sorting with sort()
The function sort() allows us to sort the elements of a vector, either in increasing order (by
default) or in decreasing order using the argument decreasing:
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
42
set11 = c("today""produced""example""beautiful""a""nicely")
# sort (decreasing order)
sort(set11)
## [1] "a"
"beautiful" "example"
"nicely"
"produced" "today"
# sort (increasing order)
sort(set11, decreasing g = TRUE)
## [1] "today"
"produced" "nicely"
"example"
"beautiful" "a"
If we have alpha-numeric strings, sort() will put the numbers rst when sorting in increasing
order:
set12 = c("today""produced""example""beautiful""1""nicely")
# sort (decreasing order)
sort(set12)
## [1] "1"
"beautiful" "example"
"nicely"
"produced" "today"
# sort (increasing order)
sort(set12, decreasing g = TRUE)
## [1] "today"
"produced" "nicely"
"example"
"beautiful" "1"
3.4.8 Repetition with rep()
A very common operation with strings is replication, that is, given a string we want to
replicate it several times. Although there is no single function in R for that purpose, we can
combine paste() and rep() like so:
# repeat  x  4 times
paste(rep("x", 4), collapse = "")
## [1] "xxxx"
CC BY-NC-SA 3.0 GastonSanchez
Handling and Processing Strings in R
Documents you may be interested
Documents you may be interested