I have many data frames named repeatably:
df.1 <- data.frame("x"=c(1,2), "y"=2)
df.2 <- data.frame("x"=c(2,4), "y"=4)
df.3 <- data.frame("x"=2, "y"=c(4,5))
All data frames have the same number of rows and columns. I want to bind them, adding a column with the id of the data frame. The id would be the name of the source data frame.
I know I could do this manually:
rbind(data.frame(id = "df.1", df.1),
data.frame(id = "df.2", df.2),
data.frame(id = "df.3", df.3))
But there's a lot of them and their number will change in the future.
I tried writing for loops but they didn't work. I suppose that's because I'm basing them on a list of strings containing data frames' names rather than a list of data frames themselves.
df_names <- ls(pattern = "df.\\d+")
for (i in df_names) {
i$id <- i
i
}
...but I also haven't found any automated way of creating a list of data frames with repeatable names. And even if I do, I'm not that sure the for-loop above would work :)