我加载时有时会使用print( load( "myDataFile.RData" ) )
列出数据文件的内容。有没有办法列出内容而不加载数据文件中包含的对象?
答案 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()
函数得到了一个新参数。使用
load("mydata.RData", verbose=TRUE)
将显示已加载的对象。当然,它仍然意味着你必须加载对象。
答案 3 :(得分:1)
可能,
load( "myDataFile.RData",ex<-new.env() )
content=ls.str(ex)