A vector is a 1d container in which each element is the same type. It's like a numpy array in python. Matrices are essentially numerical vectors with a dimension attribute. They are for numerical calculations, in particular matrix calculations. The only similarity between Data frames and matrices is that they're 2D. Think of a data frame as a spreadsheet: one column can contain dates, another floating point numbers, another a categorical variable (factor). A list is a 1d container in which each element can be pretty much anything. Suppose you had a list in which each element was itself a vector, and all those vectors have the same length. That's what a data frame is.