r - 是否有可以将唯一数字或字符串添加到文件名的 R 函数/循环?
问题描述
我是 R 和 Stack Overflow 的新手。我已经广泛寻找我的问题的答案,我不相信这是一个重复的问题。
我有 .csv 文件作为数据帧加载到我的脚本中,我需要将这些数据帧保存为 .Rda 或 .RDS 文件。
按照我编写代码的方式,旧的 .Rda 文件将在我保存它们的目录中被覆盖。
base::save(data, file="data.Rda")
有没有办法创建一个循环,在保存时将一些随机数或字符串附加到预先存在的文件名上,或者甚至是一个生成唯一 ID # 的函数?我正在寻找的是一个看起来像的输出
data_1.Rda data_2.Rda data_3.Rda 等等,每次运行代码时都会随机生成 _#。
我试图创建一个向量,例如
x<-c(a, b, c, d, e, f, g, h, i, j, k)
然后创建了一个循环来保存每个单独的变量,但循环只是将数据框保存为“a”、“b”、“c”......我想知道是否有办法将这些单独的变量附加到预先存在的名称(“data_a.Rda”、“data_b.Rda”...)
只要方法有效,我对任何方法都不特别。
解决方案
假设我有一个这样的目录:
/Documents (R home)
|
|-- my_data
|
|--data_1.Rda
|--data_2.Rda
然后我可以列出目录中的文件my_data
:
list.files(path.expand("~/my_data/"))
#> [1] "data_1.Rda" "data_2.Rda"
我可以使用一个简单的函数生成“下一个”Rda 文件路径:
next_rda <- function() {
f <- list.files(path.expand("~/my_data/"), pattern = "^data_\\d+\\.Rda")
num <- max(as.numeric(gsub("^data_(\\d)\\.Rda", "\\1", f)) + 1)
paste0(path.expand("~/my_data/data_"), num, ".Rda")
}
这样我就可以做到:
next_rda()
#> [1] "C:/Users/Administrator/Documents/my_data/data_3.Rda"
这意味着如果我想保存一个对象,我可以这样做:
save(obj, file = next_rda())
这将保存到下一个增量文件。由于该函数每次都会检查目录,因此它总是写入一个新文件,并有适当的编号。
推荐阅读
- python - 如何在 Python 3x 中以垂直和水平方式格式化列表?
- python-3.x - 尝试从 FourSquare API 调用所有素食餐厅
- r - R:计算长/纬度和形状文件之间距离的较少计算密集型方法
- python - Python/Selenium 在未找到时尝试对元素使用“if”语句
- python - 验证并处理错误以将有意义的状态传递回客户端
- python - 在 Pandas 中拆分字符串忽略大小写
- java - 带有 OpenJDK 11 的 Tomcat 9 无法识别任何 Spring 应用程序
- r - 基于 NA 有条件地删除重复项
- java - ZonedDateTime 与时区添加到打印格式
- node.js - expressjs 将控制器对象返回给 res.send