我有一个包含 .txt 文件的文件夹,其名称如下:
A_COR_001_I
A_COR_001_II
A_COR_002_I
A_COR_002_II
A_COR_003_I
A_COR_003_II
A_COR_003_III
A_COR_004_I
A_COR_004_II
A_COR_004_III
A_COR_004_IV
...
每个字符串末尾的罗马数字表示不同文档的最终草案,由前面的阿拉伯数字标识,如 002。我试图使用 list.files( ) 函数,但问题是每个文档都有不可预测的草稿数量,因此我需要一种方法将每个文档的草稿分组在一起并选出编号最高的草稿,因此使用 A_COR_004_IV 而不是 A_COR_004_III 或任何其他草稿。关于如何进行的任何想法?预先感谢!
功能,允许简单操作...罗马数字。 因此,将文件列表拆分为最后一个下划线之前所有内容的子列表,然后找到带有
max()
罗马数字的元素。
split(files, sub("_[^_]+$", "", files)) |>
lapply(
\(l) l[which.max(as.roman(sub(".*_", "", l)))]
)
# $A_COR_001
# [1] "A_COR_001_II"
# $A_COR_002
# [1] "A_COR_002_II"
# $A_COR_003
# [1] "A_COR_003_III"
# $A_COR_004
# [1] "A_COR_004_IV"
数据
files <- c( "A_COR_001_I", "A_COR_001_II", "A_COR_002_I", "A_COR_002_II", "A_COR_003_I", "A_COR_003_II", "A_COR_003_III", "A_COR_004_I", "A_COR_004_II", "A_COR_004_III", "A_COR_004_IV" )