How to Correctly Use Lists in R?

Answer

ese two expressions not return the same result?

x = list(1, 2, 3, 4); x2 = list(1:4)

A list can contain any other class as each element. So you can have a list where the first element is a character vector, the second is a data frame, etc. In this case, you have created two different lists. x has four vectors, each of length 1. x2 has 1 vector of length 4:

> length(x[[1]])[1]1> length(x2[[1]])[1]4

So these are completely different lists.

R lists are very much like a hash map data structure in that each index value can be associated with any object. Here's a simple example of a list that contains 3 different classes (including a function):

> complicated.list <- list("a"=1:4,"b"=1:3,"c"=matrix(1:4, nrow=2),"d"=search)> lapply(complicated.list, class)$a
[1]"integer"$b
[1]"integer"$c
[1]"matrix"$d
[1]"function"

Given that the last element is the search function, I can call it like so:

> complicated.list[["d"]]()[1]".GlobalEnv"...

As a final comment on this: it should be noted that a data.frame is really a list (from the data.frame documentation):

A data frame is a list of variables of the same number of rows with unique row names, given class ‘"data.frame"’

That's why columns in a data.frame can have different data types, while columns in a matrix cannot. As an example, here I try to create a matrix with numbers and characters:

> a <-1:4> class(a)[1]"integer"> b <- c("a","b","c","d")> d <- cbind(a, b)> d
 a   b  
[1,]"1""a"[2,]"2""b"[3,]"3""c"[4,]"4""d"> class(d[,1])[1]"character"

Note how I cannot change the data type in the first column to numeric because the second column has characters:

> d[,1]<- as.numeric(d[,1])> class(d[,1])[1]"character"

All r Questions

Ask your interview questions on r

Write Your comment or Questions if you want the answers on r from r Experts
Name* :
Email Id* :
Mob no* :
Question
Or
Comment* :
 





Disclimer: PCDS.CO.IN not responsible for any content, information, data or any feature of website. If you are using this website then its your own responsibility to understand the content of the website

--------- Tutorials ---