[R] Renaming multiple objects

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sat Nov 20 15:31:03 CET 2021


Hello,

You can get all objects to be changed into a list, change the list's 
names attribute and assign back to the globalenv. Something like the 
following.
First see if the objects exist in the global env.

ls()
#[1] "meb1.p.emb"  "meb2.p.emb"  "mec1.p.emb"  "mec2.p.emb"
#[5] "mej12.p.emb" "mej22.p.emb"


Now the code to change their names



# create a vector of names of the objects
# whose names are to be changed
obj_names <- ls(pattern = "\\.emb$")

# this is instruction is not strictly needed
# it's meant to check if the regex works (it does)
sub("\\.emb$", "", obj_names)
#[1] "meb1.p"  "meb2.p"  "mec1.p"  "mec2.p"  "mej12.p" "mej22.p"

# get the objects into a list
tmp_list <- mget(obj_names, envir = .GlobalEnv)
# change the list's names
names(tmp_list) <- sub("\\.emb$", "", obj_names)
# assign them to the global environment
list2env(tmp_list, envir = .GlobalEnv)

# clean up
rm(tmp_list)
rm(list = obj_names)

# check to see if it worked (it did)
ls()
#[1] "meb1.p"  "meb2.p"  "mec1.p"  "mec2.p"  "mej12.p" "mej22.p"


Hope this helps,

Rui Barradas

Às 10:27 de 20/11/21, Steven Yen escreveu:
> I have named NUMEROUS objects (each containing, e.g., 48 obs. of 5 
> variables), such as
>    mec1.p.emb
>    mec2.p.emb
>    meb1.p.emb
>    meb2.p.emb
>    mej12.p.emb
>    mej22.p.emb
> 
> How would I rename these objects removing the silly ".emb", into objects
>    mec1.p
>    mec2.p
>    meb1.p
>    meb2.p
>    mej12.p
>    mej22.p
> 
> Thank you!
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list