列出R数据文件的内容而不加载

时间:2011-01-28 17:12:39

标签: r

我加载时有时会使用print( load( "myDataFile.RData" ) )列出数据文件的内容。有没有办法列出内容而不加载数据文件中包含的对象?

4 个答案:

答案 0 :(得分:6)

如果不加载对象,我认为你不能这样做。

解决方案可以是使用包装器将R对象保存到save,该函数将对象和对象的结构保存到特殊的Rdata文件中。稍后您可以使用包装器将特殊二进制文件加载到load,您可以在其中指定仅列出数据结构。

我在一个名为saves的非常基本的包中做过类似的事情,可以在CRAN上找到。


更新:我制作了非常简单的元数据解决方案

save.ls <- function(x, file) {
    save(list=x, file=file)
    l <- ls()
    save(l, file=paste(file, 'ls', sep=''))
}
load.ls <- function(file) {
    attach(paste(file, 'ls', sep=''));
    return(l)
    detach(pos=2)
}

使用save.ls代替save保存并加载load.ls进行测试。元信息保存在单独的文件中(以“ls”结尾),但机制可以很容易地改进,例如制作一个tar文件存档(就像我在上面链接的包中一样)的Rdata对象和包含元数据的文件。

答案 1 :(得分:5)

attach(file);ls(pos=2);detach(pos=2)

那就行了。大概。 #untested

答案 2 :(得分:2)

在R v3.0.1中,load()函数得到了一个新参数。使用

加载RData文件
load("mydata.RData", verbose=TRUE) 

将显示已加载的对象。当然,它仍然意味着你必须加载对象。

答案 3 :(得分:1)

可能,

load( "myDataFile.RData",ex<-new.env() )
content=ls.str(ex)