This is a series of functions designed for a fast coding of replacements both, as internal functions and in workflows dealing with information stored in vectors and data frames. Such functions are especially useful when handling with functional traits stored in taxlist objects.
replace_x()
is used to exchange values in vectors.
replace_idx()
changes values in vectors by matching indices or conditions.
The function replace_na()
works in the same way as replace_idx()
but will
only insert values in empty elements (NAs).
The function insert_rows()
will add rows and columns at the same time.
This function will be used when a new table is appended to another but
sharing only part of the columns.
Usage
replace_x(x, old, new)
replace_idx(x, idx1 = x, idx2 = idx1, new)
replace_na(x, idx1, idx2 = idx1, new)
insert_rows(x, y)
Arguments
- x
A vector to be modified. In the case of
insert_rows()
,x
is a data frame.- old
A vector with values to be replaced by
replace_x()
in a vector.- new
A vector containing values to be inserted, either comparing values or using indices.
- idx1, idx2
Indices applied for value replacements to match
x
withnew
, respectively. Ifidx2
is not provided, it will be assumed as equivalent toidx1
.- y
A data frame including rows (and columns) to be inserted in
x
.
Examples
## Replace values in vector
replace_x(x = letters, old = c("b", "p", "f"), new = c("bee", "pork", "fungus"))
#> [1] "a" "bee" "c" "d" "e" "fungus" "g" "h"
#> [9] "i" "j" "k" "l" "m" "n" "o" "pork"
#> [17] "q" "r" "s" "t" "u" "v" "w" "x"
#> [25] "y" "z"
## Replace values using indices
replace_idx(x = letters, idx1 = 1:length(letters), idx2 = c(2, 7, 17),
new = c("second", "seventh", "seventeenth"))
#> [1] "a" "second" "c" "d" "e"
#> [6] "f" "seventh" "h" "i" "j"
#> [11] "k" "l" "m" "n" "o"
#> [16] "p" "seventeenth" "r" "s" "t"
#> [21] "u" "v" "w" "x" "y"
#> [26] "z"
## Replace values if they are NAs
letters[2] <- NA
replace_na(x = letters, idx1 = 1:length(letters), idx2 = c(1:3),
new = c("alpha", "beta", "zeta"))
#> [1] "a" "beta" "c" "d" "e" "f" "g" "h" "i" "j"
#> [11] "k" "l" "m" "n" "o" "p" "q" "r" "s" "t"
#> [21] "u" "v" "w" "x" "y" "z"
## The same applications but this time for functional traits
summary(as.factor(Easplist$life_form))
#> acropleustophyte chamaephyte climbing_plant facultative_annual
#> 8 25 25 20
#> obligate_annual phanerophyte pleustohelophyte reed_plant
#> 114 26 8 14
#> reptant_plant tussock_plant NA's
#> 19 52 3576
# Merge annuals
Easplist@taxonTraits$lifeform <- replace_x(x = Easplist@taxonTraits$life_form,
old = c("obligate_annual", "facultative_annual"), new = c("annual", "annual"))
summary(as.factor(Easplist$lifeform))
#> acropleustophyte annual chamaephyte climbing_plant
#> 8 134 25 25
#> phanerophyte pleustohelophyte reed_plant reptant_plant
#> 26 8 14 19
#> tussock_plant NA's
#> 52 3576
# The same effect
Easplist@taxonTraits$lifeform <- replace_idx(x = Easplist@taxonTraits$life_form,
idx1 = grepl("annual", Easplist@taxonTraits$life_form), idx2 = TRUE,
new = "annual")
summary(as.factor(Easplist$lifeform))
#> acropleustophyte annual chamaephyte climbing_plant
#> 8 134 25 25
#> phanerophyte pleustohelophyte reed_plant reptant_plant
#> 26 8 14 19
#> tussock_plant NA's
#> 52 3576
## Merge data frames including new columns
data(iris)
iris$Species <- paste(iris$Species)
new_iris <- data.frame(Species = rep("humilis", 2), Height = c(15, 20),
stringsAsFactors = FALSE)
insert_rows(iris, new_iris)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species Height
#> 1 5.1 3.5 1.4 0.2 setosa NA
#> 2 4.9 3.0 1.4 0.2 setosa NA
#> 3 4.7 3.2 1.3 0.2 setosa NA
#> 4 4.6 3.1 1.5 0.2 setosa NA
#> 5 5.0 3.6 1.4 0.2 setosa NA
#> 6 5.4 3.9 1.7 0.4 setosa NA
#> 7 4.6 3.4 1.4 0.3 setosa NA
#> 8 5.0 3.4 1.5 0.2 setosa NA
#> 9 4.4 2.9 1.4 0.2 setosa NA
#> 10 4.9 3.1 1.5 0.1 setosa NA
#> 11 5.4 3.7 1.5 0.2 setosa NA
#> 12 4.8 3.4 1.6 0.2 setosa NA
#> 13 4.8 3.0 1.4 0.1 setosa NA
#> 14 4.3 3.0 1.1 0.1 setosa NA
#> 15 5.8 4.0 1.2 0.2 setosa NA
#> 16 5.7 4.4 1.5 0.4 setosa NA
#> 17 5.4 3.9 1.3 0.4 setosa NA
#> 18 5.1 3.5 1.4 0.3 setosa NA
#> 19 5.7 3.8 1.7 0.3 setosa NA
#> 20 5.1 3.8 1.5 0.3 setosa NA
#> 21 5.4 3.4 1.7 0.2 setosa NA
#> 22 5.1 3.7 1.5 0.4 setosa NA
#> 23 4.6 3.6 1.0 0.2 setosa NA
#> 24 5.1 3.3 1.7 0.5 setosa NA
#> 25 4.8 3.4 1.9 0.2 setosa NA
#> 26 5.0 3.0 1.6 0.2 setosa NA
#> 27 5.0 3.4 1.6 0.4 setosa NA
#> 28 5.2 3.5 1.5 0.2 setosa NA
#> 29 5.2 3.4 1.4 0.2 setosa NA
#> 30 4.7 3.2 1.6 0.2 setosa NA
#> 31 4.8 3.1 1.6 0.2 setosa NA
#> 32 5.4 3.4 1.5 0.4 setosa NA
#> 33 5.2 4.1 1.5 0.1 setosa NA
#> 34 5.5 4.2 1.4 0.2 setosa NA
#> 35 4.9 3.1 1.5 0.2 setosa NA
#> 36 5.0 3.2 1.2 0.2 setosa NA
#> 37 5.5 3.5 1.3 0.2 setosa NA
#> 38 4.9 3.6 1.4 0.1 setosa NA
#> 39 4.4 3.0 1.3 0.2 setosa NA
#> 40 5.1 3.4 1.5 0.2 setosa NA
#> 41 5.0 3.5 1.3 0.3 setosa NA
#> 42 4.5 2.3 1.3 0.3 setosa NA
#> 43 4.4 3.2 1.3 0.2 setosa NA
#> 44 5.0 3.5 1.6 0.6 setosa NA
#> 45 5.1 3.8 1.9 0.4 setosa NA
#> 46 4.8 3.0 1.4 0.3 setosa NA
#> 47 5.1 3.8 1.6 0.2 setosa NA
#> 48 4.6 3.2 1.4 0.2 setosa NA
#> 49 5.3 3.7 1.5 0.2 setosa NA
#> 50 5.0 3.3 1.4 0.2 setosa NA
#> 51 7.0 3.2 4.7 1.4 versicolor NA
#> 52 6.4 3.2 4.5 1.5 versicolor NA
#> 53 6.9 3.1 4.9 1.5 versicolor NA
#> 54 5.5 2.3 4.0 1.3 versicolor NA
#> 55 6.5 2.8 4.6 1.5 versicolor NA
#> 56 5.7 2.8 4.5 1.3 versicolor NA
#> 57 6.3 3.3 4.7 1.6 versicolor NA
#> 58 4.9 2.4 3.3 1.0 versicolor NA
#> 59 6.6 2.9 4.6 1.3 versicolor NA
#> 60 5.2 2.7 3.9 1.4 versicolor NA
#> 61 5.0 2.0 3.5 1.0 versicolor NA
#> 62 5.9 3.0 4.2 1.5 versicolor NA
#> 63 6.0 2.2 4.0 1.0 versicolor NA
#> 64 6.1 2.9 4.7 1.4 versicolor NA
#> 65 5.6 2.9 3.6 1.3 versicolor NA
#> 66 6.7 3.1 4.4 1.4 versicolor NA
#> 67 5.6 3.0 4.5 1.5 versicolor NA
#> 68 5.8 2.7 4.1 1.0 versicolor NA
#> 69 6.2 2.2 4.5 1.5 versicolor NA
#> 70 5.6 2.5 3.9 1.1 versicolor NA
#> 71 5.9 3.2 4.8 1.8 versicolor NA
#> 72 6.1 2.8 4.0 1.3 versicolor NA
#> 73 6.3 2.5 4.9 1.5 versicolor NA
#> 74 6.1 2.8 4.7 1.2 versicolor NA
#> 75 6.4 2.9 4.3 1.3 versicolor NA
#> 76 6.6 3.0 4.4 1.4 versicolor NA
#> 77 6.8 2.8 4.8 1.4 versicolor NA
#> 78 6.7 3.0 5.0 1.7 versicolor NA
#> 79 6.0 2.9 4.5 1.5 versicolor NA
#> 80 5.7 2.6 3.5 1.0 versicolor NA
#> 81 5.5 2.4 3.8 1.1 versicolor NA
#> 82 5.5 2.4 3.7 1.0 versicolor NA
#> 83 5.8 2.7 3.9 1.2 versicolor NA
#> 84 6.0 2.7 5.1 1.6 versicolor NA
#> 85 5.4 3.0 4.5 1.5 versicolor NA
#> 86 6.0 3.4 4.5 1.6 versicolor NA
#> 87 6.7 3.1 4.7 1.5 versicolor NA
#> 88 6.3 2.3 4.4 1.3 versicolor NA
#> 89 5.6 3.0 4.1 1.3 versicolor NA
#> 90 5.5 2.5 4.0 1.3 versicolor NA
#> 91 5.5 2.6 4.4 1.2 versicolor NA
#> 92 6.1 3.0 4.6 1.4 versicolor NA
#> 93 5.8 2.6 4.0 1.2 versicolor NA
#> 94 5.0 2.3 3.3 1.0 versicolor NA
#> 95 5.6 2.7 4.2 1.3 versicolor NA
#> 96 5.7 3.0 4.2 1.2 versicolor NA
#> 97 5.7 2.9 4.2 1.3 versicolor NA
#> 98 6.2 2.9 4.3 1.3 versicolor NA
#> 99 5.1 2.5 3.0 1.1 versicolor NA
#> 100 5.7 2.8 4.1 1.3 versicolor NA
#> 101 6.3 3.3 6.0 2.5 virginica NA
#> 102 5.8 2.7 5.1 1.9 virginica NA
#> 103 7.1 3.0 5.9 2.1 virginica NA
#> 104 6.3 2.9 5.6 1.8 virginica NA
#> 105 6.5 3.0 5.8 2.2 virginica NA
#> 106 7.6 3.0 6.6 2.1 virginica NA
#> 107 4.9 2.5 4.5 1.7 virginica NA
#> 108 7.3 2.9 6.3 1.8 virginica NA
#> 109 6.7 2.5 5.8 1.8 virginica NA
#> 110 7.2 3.6 6.1 2.5 virginica NA
#> 111 6.5 3.2 5.1 2.0 virginica NA
#> 112 6.4 2.7 5.3 1.9 virginica NA
#> 113 6.8 3.0 5.5 2.1 virginica NA
#> 114 5.7 2.5 5.0 2.0 virginica NA
#> 115 5.8 2.8 5.1 2.4 virginica NA
#> 116 6.4 3.2 5.3 2.3 virginica NA
#> 117 6.5 3.0 5.5 1.8 virginica NA
#> 118 7.7 3.8 6.7 2.2 virginica NA
#> 119 7.7 2.6 6.9 2.3 virginica NA
#> 120 6.0 2.2 5.0 1.5 virginica NA
#> 121 6.9 3.2 5.7 2.3 virginica NA
#> 122 5.6 2.8 4.9 2.0 virginica NA
#> 123 7.7 2.8 6.7 2.0 virginica NA
#> 124 6.3 2.7 4.9 1.8 virginica NA
#> 125 6.7 3.3 5.7 2.1 virginica NA
#> 126 7.2 3.2 6.0 1.8 virginica NA
#> 127 6.2 2.8 4.8 1.8 virginica NA
#> 128 6.1 3.0 4.9 1.8 virginica NA
#> 129 6.4 2.8 5.6 2.1 virginica NA
#> 130 7.2 3.0 5.8 1.6 virginica NA
#> 131 7.4 2.8 6.1 1.9 virginica NA
#> 132 7.9 3.8 6.4 2.0 virginica NA
#> 133 6.4 2.8 5.6 2.2 virginica NA
#> 134 6.3 2.8 5.1 1.5 virginica NA
#> 135 6.1 2.6 5.6 1.4 virginica NA
#> 136 7.7 3.0 6.1 2.3 virginica NA
#> 137 6.3 3.4 5.6 2.4 virginica NA
#> 138 6.4 3.1 5.5 1.8 virginica NA
#> 139 6.0 3.0 4.8 1.8 virginica NA
#> 140 6.9 3.1 5.4 2.1 virginica NA
#> 141 6.7 3.1 5.6 2.4 virginica NA
#> 142 6.9 3.1 5.1 2.3 virginica NA
#> 143 5.8 2.7 5.1 1.9 virginica NA
#> 144 6.8 3.2 5.9 2.3 virginica NA
#> 145 6.7 3.3 5.7 2.5 virginica NA
#> 146 6.7 3.0 5.2 2.3 virginica NA
#> 147 6.3 2.5 5.0 1.9 virginica NA
#> 148 6.5 3.0 5.2 2.0 virginica NA
#> 149 6.2 3.4 5.4 2.3 virginica NA
#> 150 5.9 3.0 5.1 1.8 virginica NA
#> 151 NA NA NA NA humilis 15
#> 152 NA NA NA NA humilis 20