2017-02-27 7 views
1

Ich habe eine Liste von Namen in einer Datenrahmenspalte wie unten angegeben. Wie kann ich einen vorhandenen Datenrahmen mit einem Wert aus der Spalte umbenennen?Wie verwende ich einen Spaltenwert aus einem anderen Datenrahmen, um einen Datenrahmen in R umzubenennen?

# New Data Frame Name List 

NewDataFrameNameList 

    DF_Names  
1 New_DF_Name1 
2 New_DF_Name2 
3 New_DF_Name2 

Bestehende Datenrahmen

old_DF_Name1 
old_DF_Name2 
old_DF_Name3 

Umbenennung bestehenden Datenrahmen. Ich habe versucht, Funktion zuweisen, aber es hat nicht funktioniert.

assign(old_DF_Name1, NewDataFrameNameList[1,1]) 
+1

Setzen Sie den alten Datenrahmen in einer Liste 'L' und' Namen (L) <- NewDataFrameNameList $ DF_Names' – jogo

+0

Leider hat es nicht funktioniert. – RanonKahn

+0

? 'Bibliothek (Vermögen); Glück (324) ' – jogo

Antwort

1
# data frame with names 
df1 <- data.frame(a = letters[1:2], stringsAsFactors = FALSE) 

# data frames whose names have to be renamed 
df2 <- data.frame(i = 1:5, j = 6:10) 
df3 <- data.frame(i = 11:15, j = 16:20) 
ls() 
# [1] "df1" "df2" "df3" 

# get values of data frame and assign it to names in x using mapply 
# .GlobalEnv puts the newly created data frames in global environment. 
invisible(mapply(function(x, y) assign(x, y, envir = .GlobalEnv), 
        x = c(df1$a), 
        y = mget(c("df2", "df3")))) 

ls() 
# [1] "a" "b" "df1" "df2" "df3" 

rm(list = c("df1", "df2", "df3")) 
ls() 
# [1] "a" "b" 

a 
# i j 
# 1 1 6 
# 2 2 7 
# 3 3 8 
# 4 4 9 
# 5 5 10 

b 
# i j 
# 1 11 16 
# 2 12 17 
# 3 13 18 
# 4 14 19 
# 5 15 20 
+0

Sehr geehrte @Sathish, Vielen Dank für eine interessante Lösung. Ich schätze Ihre schnelle und umfassende Antwort sehr. – RanonKahn

Verwandte Themen