相关疑难解决方法(0)

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

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

r

21
推荐指数
2
解决办法
5371
查看次数

通过附加到新环境来检查.rdata文件的内容 - 可能吗?

我感兴趣的是列出RDATA文件中的对象并仅加载选定的对象,而不是整个集合(如果有些可能很大或者可能已经存在于环境中).当名称冲突时,我不太清楚如何做到这一点,因为attach()不能很好地工作.

1:用于检查R数据文件的内容而不加载它:这个问题类似,但不同于在没有加载的R数据文件的列表内容中询问的问题

在这种情况下,提供的解决方案是:

attach(filename)
ls(pos = 2)
detach()
Run Code Online (Sandbox Code Playgroud)

如果文件中的对象与全局环境中的对象之间存在命名冲突,则会显示以下警告: The following object(s) are masked _by_ '.GlobalEnv':

我尝试创建一个新环境,但我似乎无法附加到那个环境中.例如,这会产生相同的错误:

lsfile   <- function(filename){
  tmpEnv <- new.env()
  evalq(attach(filename), envir = tmpEnv)
  tmpls <- ls(pos = 2)
  detach()
  return(tmpls)
}
lsfile(filename)
Run Code Online (Sandbox Code Playgroud)

也许我用evalq(或eval)制造了一堆东西.还有其他方法可以避免命名冲突吗?

2:如果我想访问一个对象 - 如果没有命名冲突,我可以使用.rdat文件中的那个,或者将它复制到一个新文件.如果存在冲突,如何访问文件命名空间中的对象?

例如,如果我的文件是"sample.rdat",并且对象是surveyData,并且在全局环境中已经存在surveyData对象,那么如何从file:sample.rdat命名空间访问该对象?

我目前通过将所有内容加载到临时环境中来解决此问题,然后复制出所需内容,但这样效率很低.

r

9
推荐指数
3
解决办法
5080
查看次数

有没有办法读取.RDS文件的内容而不将其全部加载到内存中?

我有一个包含许多列表的.RDS文件,它是从一台计算机创建的,该计算机的内存大于我尝试读取相同数据的内存.

有没有办法访问此内容而不将其全部加载到内存中?

这是一个例子:

listOflists <- list(list1 = list(rnorm(1000)),
                    list2 = list(rnorm(1000)))
saveRDS(listOflists, "listOflists.RDS")
Run Code Online (Sandbox Code Playgroud)

是否可以只读取list1而不加载整个文件?

r

5
推荐指数
0
解决办法
125
查看次数

在函数中使用延迟分配:如何将承诺发送回父环境?

我想仅在需要数据时使用延迟分配从一组文件中加载一系列数据。但是由于这些文件将始终位于同一目录中(可能会四处移动),而不是对每个文件的位置进行硬编码(如果移动目录,稍后更改将很乏味),我只想简单地一个接受目录文件路径的函数。

loadLayers <- function(filepath) {

  delayedAssign("dataset1", readRDS(file.path(filepath, "experiment1.rds")))  
  delayedAssign("dataset2", readRDS(file.path(filepath, "experiment2.rds"))) 
  delayedAssign("dataset3", readRDS(file.path(filepath,"experiment3.rds"))) 
  return (list <- (setOne = dataset1, setTwo = dataset2, setThree = dataset3)
}
Run Code Online (Sandbox Code Playgroud)

因此,与其在开始时加载所有数据集,我希望仅在需要时才加载每个数据集(这会加快闪亮的应用程序的速度)。

但是,在函数中执行此操作时遇到了问题。当 delayAssign 不在函数中时它起作用,但是当我将它们放在函数中时,列表中的所有对象都只返回 null,并且在需要时评估它们的“承诺”似乎没有实现。

实现这一目标的正确方法是什么?谢谢。

r promise

3
推荐指数
1
解决办法
364
查看次数

标签 统计

r ×4

promise ×1