Hi!
I am new to R and dealing with a large array. As you can see from the image, the 52nd item in my array is a list [1x1x1]. It contains another list [1x113], and each one of the 113 elements contains a double [n x 1].
I can extract each 'double' by unlisting like so:
data=unlist(mylist[[52]] [[1]] [[2]])
"data" here is the numeric vector that I need (essentially my data).
My question is: Can I do it for many 'doubles' at once? Instead of doing the same thing over and over like:
data2=unlist(mylist[[52]] [[1]] [[2]])
data3=unlist(mylist[[52]] [[1]] [[3]])
data4=unlist(mylist[[52]] [[1]] [[4]])
data5=unlist(mylist[[52]] [[1]] [[5]]) .... and so on???
Ideally, I'd like to specify which elements I want to extract, for example [[52]] [[1]] [[3, 5]]
Sorry if I was not 100% clear but I am still trying to learn the R lingo... -_-
# Have a chatbot write a program in the r programming language
# to create a list of 52 elements each of which contains
# 113 lists each of which contains a list each of which
# contains a random integer in the range 10000 99999
# this one is from openai.com
# Set the number of elements, sublists, and nested sublists
num_elements <- 52
num_sublists <- 113
num_nested_sublists <- 1
# Create an empty list to hold the output
output_list <- list()
# Loop over the number of elements and create a sublist for each
for (i in 1:num_elements) {
# Create an empty sublist to hold the nested sublists
sublist <- list()
# Loop over the number of sublists and create a nested sublist for each
for (j in 1:num_sublists) {
# Create an empty nested sublist to hold the random integer
nested_sublist <- list()
# Generate a random integer in the desired range and add it to the nested sublist
random_int <- sample(10000:99999, size = 1)
nested_sublist[[1]] <- random_int
# Add the nested sublist to the current sublist
sublist[[j]] <- nested_sublist
}
# Add the current sublist to the output list
output_list[[i]] <- sublist
}
# one way to do it
take <- function(x,y) output_list[x][[1]][[y]][[1]]
mapply(take,52,c(3,5))
#> [1] 13040 83481