Change the name of list and the objects inside the list. Add different ways to extract the contents of a list in R.
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Subsetting Data in R
 | |
| ---
 | |
| 
 | |
| ## What is subsetting?
 | |
| 
 | |
| Subsetting is the selection or extraction of specific parts of larger data. We can subset on various kinds of data objects: vectors, lists, and data frames. 
 | |
| 
 | |
| ## Subsetting operators
 | |
| 
 | |
| There are three subsetting operators: `[`, `[[` and `$`. 
 | |
| 
 | |
| `[[` is similar to `[`, except it can only return a single value and it allows you to pull elements out of a list. 
 | |
| 
 | |
| `$` is a useful shorthand for `[[` combined with character subsetting.
 | |
| 
 | |
| You need `[[` when working with lists. This is because when `[` is applied to a list, it always returns a list; it never gives you the contents of the list.
 | |
| 
 | |
| The following are the examples of subsetting of various `R` objects:
 | |
| 
 | |
| **1. Vectors**
 | |
| 
 | |
| ```r
 | |
| x <- c(2.1, 4.2, 3.3, 5.4)
 | |
| x[c(3, 1)]      # Subsetting using positive integers: return elements at the specified positions.
 | |
| ## [1] 3.3 2.1
 | |
| 
 | |
| x[-c(3, 1)]     # Subsetting using positive integers: return elements at the specified positions.
 | |
| ## [1] 4.2 5.4
 | |
| 
 | |
| x[c(TRUE, TRUE, FALSE, FALSE)]  # # Subsetting using logical vectors.
 | |
| ## [1] 2.1 4.2
 | |
| ```
 | |
| 
 | |
| **2. Lists**
 | |
| 
 | |
| ```r
 | |
| a <- matrix(1:9, nrow = 3)
 | |
| colnames(a) <- c("A", "B", "C")
 | |
| a[1:2, ]
 | |
| 
 | |
| ##      A B C
 | |
| ## [1,] 1 4 7
 | |
| ## [2,] 2 5 8
 | |
| ```
 | |
| 
 | |
| **3. Data Frames**
 | |
| 
 | |
| ```r
 | |
| df <- data.frame(x = 1:3, y = 3:1, z = letters[1:3])
 | |
| 
 | |
| df[df$x == 2, ]
 | |
| ##   x y z
 | |
| ## 2 2 2 b
 | |
| 
 | |
| df[c(1, 3), ]
 | |
| ##   x y z
 | |
| ## 1 1 3 a
 | |
| ## 3 3 1 c
 | |
| ```
 | |
| 
 | |
| To get contents of a list use `[[` or `$` operator like:
 | |
| 
 | |
| ```r
 | |
| sample_list <- list(char = "List-in-R", num = c(1:9), bool = TRUE)
 | |
| sample_list[[1]]
 | |
| ## [1] "List-in-R"
 | |
| 
 | |
| sample_list[["num"]]
 | |
| ## [1] 1 2 3 4 5 6 7 8 9
 | |
| 
 | |
| sample_list$bool 
 | |
| ## [1] TRUE
 | |
| ```
 | |
| 
 | |
| ## Resources
 | |
| 
 | |
|  * [Quick-R](https://www.statmethods.net/management/subset.html)
 | |
|  * [R Documentation](https://www.rdocumentation.org/packages/base/versions/3.5.1/topics/subset)
 | |
|  * [R Bloggers](https://www.r-bloggers.com/5-ways-to-subset-a-data-frame-in-r/)
 | |
|  * [Advanced R](http://adv-r.had.co.nz/Subsetting.html)
 | |
|  * [Spoken Tutorials](https://spoken-tutorial.org/watch/R/Indexing%2Band%2BSlicing%2BData%2BFrames/English/)
 |