【问题标题】:Importing selected .csv files in R out of multiple .csv files present in a folder从文件夹中存在的多个 .csv 文件中导入 R 中选定的 .csv 文件
【发布时间】:2015-03-03 20:15:26
【问题描述】:

我在一个文件夹中有多个 .csv 文件,命名为 Pt4_1、Pt4_2、Pt5_1、Pt5_2....等等。 R中有没有办法导入选定的文件。据我所知(绝对非常有限),似乎有一种导入 .csv 文件的方法,例如:

read.table("Pt4_1.csv", header = TRUE, sep = ",")

但是,这似乎对我没有任何帮助,因为我必须导入多个 .csv 文件,结果是多次编写上述语法(乏味)。

谁能建议一种方法,以便我能够编写一个循环并相应地调用多个 .csv 文件?提前谢谢你!

【问题讨论】:

    标签: r csv


    【解决方案1】:

    如果文件在工作目录中并且它们具有明确的模式,例如,下面的代码将选择以 Pt 开头 (^) 后跟数字 (\\d+)、下划线 (@ 987654324@)、数字 (\\d+) 和 .csv。使用lapplyread.csv 读取“列表”中的文件。

     files <- list.files(pattern='^Pt\\d+_\\d+.csv')
     lst <- lapply(files, read.csv,header=TRUE)
    

    如果文件非常大,另一个选择是使用来自data.tablefread

     library(data.table)
     lst1 <- lapply(files, fread)
    

    更新

    您也许可以创建一个函数来创建模式。

     filePat <- function(d1, d2){
          sprintf('Pt%d_%d.csv', d1, d2)
         }
    
    filePat(2,3)
    #[1] "Pt2_3.csv"
    

    【讨论】:

    • 这列出了所有模式为 '^Pt\d+_\d+.csv' 的文件。有没有办法访问特定的 .csv 文件,比如 Pt5_2。我正在寻找这样的东西: csvRead('FilePath' + "\" + "Pt" + string(i+3) + "_" + string(j) + ".csv", ',') here i= 2和j=2。在 Scilab 等平台上运行此命令将读取 Pt5_2.csv 文件。
    • 如果你想要一个特定的文件,为什么不直接使用filename 而不是模式。我可能误解了你的问题。是否要读取文件Pt5_2、Pt_5_3`等......
    • Deepak,这个解决方案的重点是在循环中使用files的元素。 Akrun 使用了lapply,但你也可以写成for(fname in files) read.csv(fname) 等等。
    • @akrun 我不想硬编码文件名,因为我可能会按照逻辑处理任何 .csv 文件(在目录中可用)(例如,一次是 Pt4_1,另一次是 Pt8_2等等)。因此,我正在寻找可以将前缀设置为“Pt”并更改以下数字(例如 4_1 或 8_2)以调用 .csv 文件的东西。简而言之,我应该能够动态修改 .csv 文件名。感谢您的帮助,同时我正在谷歌搜索此问题的解决方案。
    • @Deepak 那么,您是说您有时只想处理Pt4_1 文件吗?为什么不使用paste
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 2018-11-22
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多