【问题标题】:Remove the unmatched csv file between two folders before reading csv file在读取 csv 文件之前删除两个文件夹之间不匹配的 csv 文件
【发布时间】:2020-01-07 08:04:27
【问题描述】:

我有两个文件夹,它们的文件名也有一定的模式

在“post”文件夹中有 5 个文件“aab.csv、bbc.csv、cfd.csv、f.csv、g.csv” 在“comment”文件夹中有 4 个文件“aab_comment.csv、bbc_comment.csv、cfd_comment.csv、dgh_comment.csv”

它们是大数据文件。所以,在阅读这些文件之前,我只想阅读匹配的文件。前面单词不相同的非不匹配文件。

例如,在“post”文件夹中,aab、bbc、cfd 和在“comment”文件夹中的aab_comment、bbc_coment、cfd_comment 的前词相同。所以,我只想在 post 文件夹的文件列表中制作 3 个文件“aab.csv、bbc.csv、cfd.csv”。

如何制作 modified_post_list(aab.csv、bbc.csv、cfd.csv)?

以下是我到现在为止的尝试。

post_dir <- c:/post/
comment_dir <- c:/comment/
post <- list.files(post_dir)
#> aab.csv',' bbc.csv', 'cfd.csv', 'f.csv', 'efg.csv', 'fgg.csv', 'gda.csv'

comment <- list.files(comment_dir)
#> 'abc_comment.csv', 'bcc_comment.csv', 'efg_comment.csv', 'fgg_comment.csv'

【问题讨论】:

  • front word 是什么意思? “aab”、“bbc”、“cfd”和“f”和“g”和“comment”文件有什么相同之处?

标签: r regex


【解决方案1】:

您可以使用sub 提取文件名的前词,并使用%in% 来查找匹配项:

x <- sub("(.*)\\..*", "\\1", post)
y <- sub("(.*)_.*", "\\1", comment)
post[x %in% y]
#[1] "aab.csv" "bbc.csv" "cfd.csv"
comment[y %in% x]
#[1] "aab_comment.csv" "bbc_comment.csv" "cfd_comment.csv"

数据:

post  <- c("aab.csv", "bbc.csv", "cfd.csv", "f.csv", "g.csv")
comment  <- c("aab_comment.csv", "bbc_comment.csv", "cfd_comment.csv", "dgh_comment.csv")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多