【发布时间】:2015-08-30 08:19:00
【问题描述】:
来自 save.ffdf 的文档:
使用‘save.ffdf’自动设置‘ff’的‘finalizer’ 向量到“关闭”。这意味着数据将保留在 删除对象或关闭 R 会话时的磁盘。数据可以 使用“删除”或删除目录 对象已保存('dir')。
我想从一个小的 ffdf 数据框开始,一次添加一点新数据,然后在磁盘上增长它。于是我做了一个小实验:
# in R
ffiris = as.ffdf(iris)
save.ffdf(ffiris, dir = "~/Desktop/iris")
# in bash
ls ~/Desktop/iris/
## ffiris$Petal.Length.ff ffiris$Petal.Width.ff ffiris$Sepal.Length.ff ffiris$Sepal.Width.ff ffiris$Species.ff
# in R
# add a new column
ffiris =transform(ffiris, new1 = rep(99, nrow(iris)))
rm(ffiris)
# in bash
ls ~/Desktop/iris/
## ffiris$Petal.Length.ff ffiris$Petal.Width.ff ffiris$Sepal.Length.ff ffiris$Sepal.Width.ff ffiris$Species.ff
事实证明,当我删除 ffiris 时,它不会自动更新磁盘上的 ff 数据。手动保存呢?
# in R
# add a new column
ffiris =transform(ffiris, new1 = rep(99, nrow(iris)))
save.ffdf(ffiris, "~/Desktop/iris")
# in bash
ls ~/Desktop/iris/
## ffiris$Petal.Length.ff ffiris$Petal.Width.ff ffiris$Sepal.Length.ff ffiris$Sepal.Width.ff ffiris$Species.ff
嗯,还是没有运气。为什么?
保存之前删除文件夹怎么样?
# in R
ffiris = as.ffdf(iris)
unlink("~/Desktop/iris", recursive = TRUE, force = TRUE)
save.ffdf(ffiris, "~/Desktop/iris", overwrite = TRUE)
ffiris =transform(ffiris, new1 = rep(99, nrow(iris)))
unlink("~/Desktop/iris", recursive = TRUE, force = TRUE)
save.ffdf(ffiris, "~/Desktop/iris", overwrite = TRUE)
# in bash
ls ~/Desktop/iris/
# ls: /Users/ky/Desktop/iris/: No such file or directory
更陌生。 即使这一切都有效,它仍然会非常低效。我正在寻找类似的东西:
updateOnDisk(ffiris)
有人可以帮忙吗?
【问题讨论】: