2016-03-07 76 views
1

我想将现有数据框重命名为变量中的名称。任何想法都表示赞赏。动态重命名数据帧

rtbl <- load("clarktestjunk.RData") 

datasetname = "specialdata" # passed in by the user 
rename(rtbl,datasetname) # this is not the correct command 

specialdata # this is how I want to reference the data set down stream. 
+0

相关文章:http://stackoverflow.com/questions/22951811,http://stackoverflow.com/questions/2717757 – zx8754

+0

我想通了。 eval(parse(text = paste(datasetname,“< - rtbl”))) –

+0

“如果答案是parse(),你通常应该重新考虑这个问题。” - Thomas Lumley R-help(2005年2月)。此外,请参阅[具体是什么eval(parse(...))的危险?](http://stackoverflow.com/questions/13649979/what-specifically-are-the-dangers-of-evalparse) – zx8754

回答

1

这是一个办法(这不仅对数据帧作品):

old.name=data.frame(a=1:5,b=6:10) 
assign("new.name",old.name) 

> new.name 
    a b 
1 1 6 
2 2 7 
3 3 8 
4 4 9 
5 5 10 
1

的对象不能在你的伪代码暗示的方式进行重命名。您可以将data.frame的内容分配给具有已知名称的新对象。 (请参阅@ Wave的解决方案assign。)但原始对象仍然存在。

rm(list=ls()) 
data(cars) 
ls() 
# [1] "cars" 
assign("renamed_cars", cars) 
ls() 
# [1] "cars"   "renamed_cars" 
rm(cars) 
ls() 
# [1] "renamed_cars"