I have a list, with 3 "columns":
test = list(1:100, 1:100,1:100)
How can I access the e.g. first 10 entries of each column?
test[c(1:10),]
doesn't work. I know it works for data.frames:
as.data.frame(test)[1:10,1:3]
How do I solve this with lists?
Edit: To get an answer more general:
How do I get the entries 15 to 20 in column 1 and 3? Here is what I do for data.frames:
as.data.frame(test)[c(15:20),c(1,3)]
It seems like the indexing differs a lot between data.frames and lists.
You can do it with functions lapply()
and head()
.
lapply(test,head,n=10)
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 1 2 3 4 5 6 7 8 9 10
[[3]]
[1] 1 2 3 4 5 6 7 8 9 10
If there will be less than n=
values in list element then this show all values.
test = list(1:100, 1:100,1:5)
lapply(test,head,n=10)
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 1 2 3 4 5 6 7 8 9 10
[[3]]
[1] 1 2 3 4 5
Depending on the return type you want, lapply
or sapply
will be useful. I'd use [
to get the elements you want:
lapply( test , `[` , 1:10 )
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 1 2 3 4 5 6 7 8 9 10
[[3]]
[1] 1 2 3 4 5 6 7 8 9 10
sapply( test , `[` , 1:10 )
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
[4,] 4 4 4
[5,] 5 5 5
[6,] 6 6 6
[7,] 7 7 7
[8,] 8 8 8
[9,] 9 9 9
[10,] 10 10 10
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With