1

I was wondering how to select multiple objects in R and save them to a dataframe. So let's say ls()gives me following objects:

ls()
 [1] "[.avector"             "a-32"                  "a-33"                 
 [4] "a_32"                  "a_33"                  "a_34"                 
 [7] "a_35"                  "a_36"                  "a_37"                 
[10] "a_38"                  "a_39"                  "a_40"                 
[13] "a_41"                  "a_42"                  "a_43"   

how do connect ls[2:15] to one dataframe?

Thanks so much in advance!

Edit:

Following your advice I used this code:

list<- mget(ls()[2:15])
df<- do.call(rbind, list)

asking for the class R tells me that df is a matrix.

so, I converted df to a dataframe yielding this:

df<- data.frame(df)
df

data.frame(df)
     X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21
a-32 NA  2 NA NA NA NA NA  4 NA  NA   1   1  NA   6   2  NA  NA  NA   6  NA  NA
a-33 NA  2 NA NA NA NA NA  4 NA  NA   1   3  NA   6   4  NA  NA  NA   6  NA  NA
a_32 NA  2 NA NA NA NA NA  4 NA  NA   1   1  NA   6   2  NA  NA  NA   6  NA  NA
a_33 NA  2 NA NA NA NA NA  4 NA  NA   1   3  NA   6   4  NA  NA  NA   6  NA  NA
a_34 NA  1 NA NA NA NA NA  1 NA  NA   1   1  NA   4   1  NA  NA  NA   1  NA  NA
a_35 NA  1 NA NA NA NA NA  4 NA  NA   1   1  NA   6   2  NA  NA  NA   6  NA  NA
a_36 NA  2 NA NA NA NA NA  4 NA  NA   1   2  NA   6   4  NA  NA  NA   6  NA  NA
a_37 NA  4 NA NA NA NA NA  3 NA  NA   4   2  NA   6   3  NA  NA  NA   4  NA  NA
a_38 NA  4 NA NA NA NA NA  5 NA  NA   4   3  NA   6   3  NA  NA  NA   4  NA  N
.....

So if I see it correctly, R put my objects as rows. Can I bind them to colums?

Edit 2:

I used cbind() and it worked out. Thank you so, so much for your help!

a.henrietty
  • 55
  • 1
  • 1
  • 8
  • 1
    Try `do.call("rbind",mget(ls()[2:15]))` but it kind of depends on what all those objects really are – MrFlick Jul 14 '20 at 15:56
  • 1
    See: https://stackoverflow.com/questions/35387419/how-to-rbind-all-the-data-frames-in-your-working-environment – MrFlick Jul 14 '20 at 15:57
  • 1
    Also note [the `pattern` argument in `ls`](https://stackoverflow.com/questions/24210327/make-a-list-from-lspattern-r). – Henrik Jul 14 '20 at 16:00
  • Are each of those objects vectors? –  Jul 14 '20 at 16:07
  • Yup, class is numeric. They have many NAs. – a.henrietty Jul 14 '20 at 16:09
  • 1
    Or grab objects from your environment based on a certain `class`, e.g.: [Use ls() or objects() to get objects of class data.frame](https://stackoverflow.com/questions/5796508/use-ls-or-objects-to-get-objects-of-class-data-frame). – Henrik Jul 14 '20 at 16:11
  • 1
    I'm glad you figured somethingout, but if you solved your one question, then you should add that as an answer below. Do not edit your question to include an answer. That's not how Stack Overflow is meant to work. – MrFlick Jul 14 '20 at 16:12

2 Answers2

2

The names of your objects have the same pattern, so it's more general to set the pattern argument in ls() to match objects. In addition, you can use cbind.data.frame() to bind several vectors by column.

cbind.data.frame(mget(ls(pattern = "^a")))
Darren Tsai
  • 32,117
  • 5
  • 21
  • 51
1

You can try:

List <- mget(ls()[2:15])
df <- do.call(rbind,List)
Duck
  • 39,058
  • 13
  • 42
  • 84