[1] "character"
[1] "double"
[1] "logical"
In this lab, I’ll create three vectors for different data types: numeric, character, and logical. I’ll then evaluate the vectors for data type and missing values before moving on add new values to each vector.
In this section of my lab, I’ve created a set of related vectors describing members of my household.
Note that I’ve told R that it shouldn’t display my R code in this section when it renders the Quarto document by specifying FALSE
for the include
argument in each code chunk.
Although the code is not displayed in the rendered document, R still evaluates (runs) the code which allows me to refer to it in the remainder of this document.
Specifically, I’ve told R to display the output of my code in the table below via the use of inline R code.
Vector | Description | Data Type | Values |
---|---|---|---|
names |
given name of household member | character | tyler, olivia, josie |
height_m |
height of household member in meters | double | 1.905, 1.6256, 0.2286 |
is_cat |
household member is of the species Felis catus | logical | FALSE, FALSE, TRUE |
In the table above, I displayed the data type for each vector. But I’ll do it again in this section within a code chunk.
Starting with names
, then height_m
, and finally, is_cat
.
[1] "character"
[1] "double"
[1] "logical"
Again, starting with names
, then height_m
, and finally, is_cat
.
[1] FALSE FALSE FALSE
[1] FALSE FALSE FALSE
[1] FALSE FALSE FALSE
Now I’m going to add new values to each vector. Check out my code comments to see why.
See table below for additions made to vectors. Again I’ve used inline R code to insert data/results in the formatted text of my document.
Vector | New Values |
---|---|
names |
theo, … |
height_m |
0.254, NA |
is_cat |
TRUE, NA |
Finally, I’ll extract some values from my vectors. Let’s say I’m only interested in the cat data in my vectors. So I’ll only keep that data.
Note that, within this section, my R code is displayed. By default, the include
and echo
options for R code chunks are set to TRUE
which means both R code and results will be displayed in my rendered document.
It also means that I don’t have to tell R to display them (i.e., I don’t need to add include=TRUE
or echo=TRUE
to my code chunks).
First, I’m going to use indices and conditional subsetting to create new vector objects.
# subset three values from vectors
<- names[3:5]
cat_names <- height_m[height_m < 1.0 | is.na(height_m)]
cat_height_m <- is_cat[3:5] cat_check
Let’s check out the new vectors.
cat_names
[1] "josie" "theo" "..."
cat_height_m
[1] 0.2286 0.2540 NA
cat_check
[1] TRUE TRUE NA
Second, I’m going to keep a single value from my numeric vector. Specifically, I want to check the height of the smallest member of my household, Josie.
Note that I can do this with either my original vector height_m
or my new vector cat_height
because they both contain Josie’s data.
I’ll use the position of her name to select her height. I can do this because I know the order of the data is consistent across my vectors (i.e., her data is at the same position in both the names
vector and the height_m
vector). But it’s not really a robust approach.
Because she is the smallest member of my household, I know that her height will be the smallest value in the numeric vector. So an alternative and more robust approach is to extract the smallest value from the numeric vector. I’ll need to make sure to remove NAs from the evaluation, too.
I’m going to store her height as an object and then apply the round
function to the object.
# using original vector and its values
<- height_m[names == "josie"]
josie_height_1 round(josie_height_1, digits = 2)
[1] 0.23
# using new vectors and smallest value
<- min(cat_height_m, na.rm=T)
josie_height_2 round(josie_height_2, digits = 2)
[1] 0.23
That wraps up this lab!