获取“.rda”文件中的数据集名称

时间:2011-06-11 13:33:24

标签: r

假设我使用.rda创建了save()个文件。例如:

save(mydata1, file = "anrdatafile.rda")

其中,mydata1是数据框。

我想在R中编写代码,其中:(1)加载'anrdatafile.rda'文件; (2)找到该文件中数据帧的名称(3)将找到的数据帧与另一个数据帧mydata2组合在一起。

如何实现第2步?一旦我在步骤2中获得了数据框的名称,我就可以

combineddata = rbind(mydata1, mydata2)

但我不知道如何将.rda文件中的数据框名称mydata1作为代码的一部分。

我试过

nameofthedataframe = load('anrdatafile.rda')

这会将字符串“mydata1”分配给变量“nameofthedataframe”,但是如何获取数据框mydata1中的数据?

为了澄清,我知道我可以使用与用于保存数据相同的数据框名称。但是,假设我忘记了变量是什么。或者,更重要的是,我必须在代码中对变量名进行硬编码。我想知道一旦我给它文件名,程序是否可以在运行时找出数据框的名称。

感谢。如果不清楚,请告诉我。我会尽力澄清。

4 个答案:

答案 0 :(得分:7)

要获取RData文件中的一个或多个变量的名称,请使用 环境 加载。

首先,创建并保存一些数据:

R> grumpy <- 1; happy <- 42; sneezy <- 1/7
R> save(grumpy, happy, sneezy, file="/tmp/Dwarves.RData")
R> 

然后在新的(或清理的)R会话中:

R> ls()
character(0)
R> myenv <- new.env()
R> load("/tmp/Dwarves.RData", env=myenv)
R> ls(envir=myenv)
[1] "grumpy" "happy"  "sneezy"
R> 
R> myenv$sneezy
[1] 0.142857
R> myenv$happy
[1] 42
R> 

并且您看到提供给load()的该环境中的变量对应于我们在文件中保存的内容。

答案 1 :(得分:4)

如果您有对象的名称,但想要实际值,请使用get功能。所以你可以这样做:

combineddata <- rbind( get(nameofthedataframe), mydata2 )

答案 2 :(得分:1)

如果您不小心想首先使用单个数据框制作大量RData文件然后合并它们,我认为rtape包将以更舒适的方式完成工作。它允许您创建一种可附加的RData文件,然后将它们转换为列表或迭代它们。

无论如何,在你的情况下,它看起来更像是这样:

#Make a new data frame, say A
rtapeAdd('myTape.tape',A) #This will create myTape.tape file
#...
#Make even newer data frame, say B
rtapeAdd('myTape.tape',B)
#... 
#...
rtapeAdd('myTape.tape',Z)

#Now the merge
do.call(rbind,rtapeAsList('myTape.tape'))->mergedDataFrame

正如您所看到的,rtape没有对单个条目使用任何名称(仅限订单),因此您没有浏览它们的问题。

答案 3 :(得分:0)

无论如何我会回答:

运行load命令后,数据帧将再次出现在同一个变量中! 您可以使用以下方法轻松测试此类事物:

a<-1:5
a #[1] 1 2 3 4 5
save(a, "test.txt")
rm(a) #remove a from environment
a #Error: object 'a' not found #elvis has left the building!
namesloaded<-load("test.txt") #after this, namesloaded contains "a"
a #[1] 1 2 3 4 5 #elvis just rose from the dead