For loop on multiple lists in object [duplicate] - r

This question already has answers here:
number of rows each data frame in a list [duplicate]
(2 answers)
Closed 3 years ago.
I have 10 lists stored in the object squared.res$squared that can be called using squared.res$squared[1] (list1) squared.res$squared[2] list2 etc. I would like to get the number of rows for each list in the object.
I tried to convert to data frame and do a loop, but the output is empty. I did not manage to produce a data example.
EDIT: squared.res is a list
for (i in 1:10) {
dim(do.call(rbind.data.frame, squared.res$squared[i]))[1]
}

If squared.res$squared is a list, it seems that
lapply(squared.res$squared, length)
should work. Or with sapply instead of lapply, or dim instead of length as #jogo proposes.

Related

Call dataframe with index in a loop [duplicate]

This question already has answers here:
R - use rbind on multiple variables with similar names
(2 answers)
rbind multiple data sets [duplicate]
(4 answers)
Closed 3 years ago.
I have some data frame data1, data2, data10.
I want to combine all those data frames by rows.
I tried using rbind in a loop but i can't call dataframe correctly in the loop.
tempo<-data.frame()
for(j in 1:10){
tempo<-rbind(tempo,eval(parse(paste0("data",j))))
}
but that doesn't work. R doesn't know the dataframe that i want to call with command eval(parse)
Thank you

How to make a large list in R without using a loop [duplicate]

This question already has answers here:
How do I make a list of data frames?
(10 answers)
Closed 4 years ago.
I have around 500 dataframes with two columns and a varying number of rows (from 10 till 30) in R. I also have a character vector containing the names for the dataframes. I now wish to bundle all these dataframes into a single list so I can refer to these list elements using the dataframe names.
I was thinking to use a loop to loop through the dataframes and add them to the list in each step but I couldn't pull it of.
The following works:
df_list = mget(df_names)
However, the real solution is to not have 500 data.frames in your workspace to begin with: either load/create them immediately inside a list, or have your data in such a format that it’s collated into one big data.frame.
Think of variables as things you have to keep in your head at the same time: if there are too many to remember, you have too many. Because how else can you reason about the state of your program, i.e. about its semantics and correctness?
Check this:
df_names <- c( ) # yours dataframes names character vector
lst <- list()
for (i in df_names) {
lst[i] <- list(get(i))
}

how to convert a dataframe to a list [duplicate]

This question already has answers here:
data.frame rows to a list
(12 answers)
Closed 4 years ago.
I have a very small csv file that when I import to R, becomes a dataframe. I would like to make this dataframe a list, but "as.list" only reads the dataframe items to me in list form and does not actually make a change to the data. I need to make a properties csv a list in order to use it to create a community in R. Any suggestions would be appreciated!
Technically, a data frame is a list, with the restriction that each element of the list is of the same size. If you want to split your data frame into a list based on the row, you can use split
df_as_list <- split(df, 1:nrow(df))
This can be fancier too, it can be based on the levels of a factor or character vector:
df_as_list <- split(df, df$identifier)
Either of these will create a list of data frames, with some number of rows from the original data frame assigned to each element of the list.

How to acces data frames in a loop in R [duplicate]

This question already has an answer here:
Access variable dataframe in R loop
(1 answer)
Closed 6 years ago.
I want to access data frames in a loop(df_1,df_2,df_3,df_4).So I tried to use the following code
for(i in 1:4){
total[i]=sum(paste0("df_",i)$percentage)
}
But it throws the error operator invalid for atomic vector.So how is it possible to read the data frames in a loop?
What you probably are trying to do is,
listdf <- mget(paste0("df", 1:4))
sapply(listdf, function(x) sum(x["percentage"]))
accessing the object with name using mget and making a list of dataframes and then for each dataframe in the list finding the sum of the percentage column

number of rows each data frame in a list [duplicate]

This question already has answers here:
How to count rows?
(3 answers)
Closed 5 years ago.
I have a list of data frames in R. They are created using lapply and read.csv commands. I want to know the number of rows of each data frame in the list. The nrow command does not work for this list. I am not sure may because it is a list. Any idea about counting the number of rows of each data frame in a list?
Lists don't have rows. Use sapply to loop over the list:
sapply(data.frame.list, nrow)
or lapply- the difference is in the output
lapply(data.frame.list, function(x) nrow(x))

Resources