Multi-mode data structures like lists and data frames allow R to store different data types together. Lists are containers that can hold any R object and are created using the list function. Data frames are a special type of list that can only hold vectors of the same length and are created using the data.frame function. Both lists and data frames can be subscripted and referenced using names, integer indices, logical vectors, and character strings to select elements.