R Data Structures
There are 4 basic data structures in R. I am not referring to the basic data types (numeric, integer, character, logical, complex ).
1. Vector – Sequence of elements of the same basic data type.
# These are some examples of vectors.
# A numeric vector showing temperatures in Chicago of a particular week.
> temp = c(12.4, 13.5, 15.6, 20, 21.5, 13.6, 12.4)
> temp
[1] 12.4 13.5 15.6 20.0 21.5 13.6 12.4
# You cannot have different data types in a vector.
# Since 12.4 is now defined as a string, all of the numbers have been
# converted to strings automatically.
> temp = c(12.4, 13.5, 15.6, 20, 21.5, 13.6, "12.4")
> temp
[1] "12.4" "13.5" "15.6" "20" "21.5" "13.6" "12.4"
2. Matrix – If a Vector is 1D (1-dimensional), a matrix is 2D
# For example, if the vector temp_month contains the temperatures in
# Chicago for an entire month
> temp_month
[1] 12.4 13.5 15.6 20.0 21.5 13.6 12.4 13.2 12.6 17.6
[11] 12.8 19.4 14.3 16.7 17.2 14.5 16.7 19.2 21.5 14.0
[21] 19.4 19.3 17.5 18.5 20.1 22.5 23.5 34.1
<pre class="wp-block-syntaxhighlighter-code"># this can be folded into a 4x7 matrix as below
> month_matrix = matrix(temp_month, nrow=4, ncol=7, byrow=TRUE)<div>> month_matrix</div><div> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 12.4 13.5 15.6 20.0 21.5 13.6 12.4
[2,] 13.2 12.6 17.6 12.8 19.4 14.3 16.7
[3,] 17.2 14.5 16.7 19.2 21.5 14.0 19.4
[4,] 19.3 17.5 18.5 20.1 22.5 23.5 34.1</div></pre>
3. List – Like a vector, but not limited to “same data type”
# For example, different data types like a person's age (numeric),
# name(string), city(string),zip code (numeric) can be stored in a list.
> person = list(30, "Ajay", "San Francisco", 94000 )
> person
[[1]]
[1] 30
[[2]]
[1] "Ajay"
[[3]]
[1] "San Francisco"
[[4]]
[1] 94000
4. Data Frame – Like a Matrix, but not limited to “same data type”
<pre class="wp-block-syntaxhighlighter-code"># A data frame is usually created by reading from external data
# using functions like read.csv() or read.table().
# Imagine 4 vectors
> age = c(30,32,21,60)<div>> names = c("Ajay","Adam","Mary","Aishu")
> cities = c("San Francisco","New York","Sunnyvale","San Jose")
> zip = c(94000,40101,94010,94001)
</pre>
<pre class="wp-block-syntaxhighlighter-code"># We can combine the vectors into a data frame like so
> persons = data.frame(age,names,cities,zip)<div>> persons</div><div> age names cities zip
1 30 Ajay San Francisco 94000
2 32 Adam New York 40100
3 21 Mary Sunnyvale 94010
4 60 Aishu San Jose 94001</div></div>
</pre>