r - R : how to move data from one drive to another, 中的 ff 包并更改文件名

标签 r ff

我正在集中精力使用令人惊叹的 ff 和 ffbase 包。 由于一些技术细节,我必须在我的 C: 驱动器中使用我的 R session 。完成后,我将生成的文件移动到我的 P: 驱动器(在 Windows 中使用剪切/粘贴,而不是使用 ff)。

问题是当我加载 ffdf 对象时:

load.ffdf("data") 

我得到错误:

Error: file.access(filename, 0) == 0 is not TRUE

没关系,因为没有人告诉 ffdf 对象它被移动了,但是尝试:

filename(data$x) <- "path/data_ff/x.ff"

pattern(data) <- "./data_ff/"

没有帮助,给出错误:

Error in `filename<-.ff`(`*tmp*`, value = filename) : 
ff file rename from 'C:/DATA/data_ff/id.ff' to 'P:/DATA_C/data_ff/e84282d4fb8.ff' failed. 

有什么方法可以将文件新位置的路径“更改”到 ffdf 对象中吗? 谢谢 !!

最佳答案

如果你想在之后“更正”你的文件名,你可以使用:

physical(x)$filename <- "newfilename"

例如:

> a <- ff(1:20, vmode="integer", filename="./a.ff")
> saveRDS(a, "a.RDS")
> rm(a)
> file.rename("./a.ff", "./b.ff")
[1] TRUE
> b <- readRDS("a.RDS")
> b
ff (deleted) integer length=20 (20)
> physical(b)$filename <- "./b.ff"
> b[]
opening ff ./b.ff
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

在第一个 session 中使用 filename() 当然会更容易。您还可以查看 ffbase 包中的 save.ffdf 和相应的 load.ffdf 函数,这使得这更简单。

添加

要重命名 ffdf 中所有列的文件名,您可以使用以下函数:

redir <- function(ff, newdir) {
  for (x in physical(b)) {
    fn <- basename(filename(x))
    physical(x)$filename <- file.path(newdir, fn)
  }
  return (ff)
}

关于r - R : how to move data from one drive to another, 中的 ff 包并更改文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17464731/

相关文章:

r - 在 R 中划分相关矩阵

ruby - 如何在 extconf.rb 中为 SWIG 正确包含库路径和其他标志?

在 R 中将大型数据框从宽变为长

r - 在 Shiny 的压缩文件夹中下载多个 csv 文件

arrays - 有效地计算 R 中 3d 数组的行总和

r - 有关如何在R中运行嵌套逻辑回归的分步过程

r - 如何删除R中的ffdf对象目录?

r - 在树文件类 Phylo 的列上使用函数

r - 将 ff 对象转换为 data.frame

r - 在磁盘上逐渐增长一个 ffdf 数据框