从 save.ffdf 的文档中:
使用“save.ffdf”会自动将“ff”向量的“终结器”设置为“关闭”。这意味着当对象被删除或 R 会话关闭时,数据将保留在磁盘上。可以使用“删除”或删除保存对象的目录(“目录”)来删除数据。
我想从一个小的 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)
有人可以帮忙吗?