xiaotu9316 2024-05-29 11:26 采纳率: 88.6%
浏览 33
已结题

R语言如何读取文件名中只包含特定字符的txt文档

R语言如何读取文件名中只包含特定字符的txt文档

如图:

img

1、读取当前目录下,所有文件夹内的所有txt文档(txt文件名结尾只为:presso离群值)

2、读取当前目录下,所有文件夹内的所有txt文档(txt文件名结尾只为:presso_results)

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-29 11:26
    关注

    引自免费微信小程序:皆我百晓生

    要实现这个需求,你需要使用R语言中的list.files()函数来获取文件列表,然后通过正则表达式筛选出符合要求的文件名。这里是一个详细的步骤:

    首先,确保你已经安装了必要的包,如stringr,如果没有安装,可以使用下面的命令进行安装:

    install.packages("stringr")
    

    接下来,使用下面的代码来分别读取两种类型的txt文件:

    # 导入所需包
    library(stringr)
    
    # 定义工作目录,这里假设是当前目录
    work_dir <- getwd()
    
    # 读取"presso离群值"结尾的txt文件
    file_list_pressure_outliers <- list.files(work_dir, pattern = ".*presso\\_离群值\\.txt", full.names = TRUE)
    pressure_data <- lapply(file_list_pressure_outliers, function(file) {
      read.table(file, header = TRUE, stringsAsFactors = FALSE)
    })
    
    # 读取"presso_results"结尾的txt文件
    file_list_pressure_results <- list.files(work_dir, pattern = ".*presso\\_results\\.txt", full.names = TRUE)
    pressure_results_data <- lapply(file_list_pressure_results, function(file) {
      read.table(file, header = TRUE, stringsAsFactors = FALSE)
    })
    
    # 将数据合并成一个列表
    all_data <- list(pressure_outliers = pressure_data, pressure_results = pressure_results_data)
    

    这段代码首先定义了工作目录为当前目录,然后使用list.files()函数配合正则表达式找到符合条件的txt文件。正则表达式中的模式匹配规则如下:

    • .* 表示任意数量的任何字符
    • presso\\_离群值presso\\_results 是我们想要匹配的字符串,注意这里的反斜杠\是用来转义特殊字符的
    • \\.txt 匹配.txt扩展名

    之后,我们使用lapply()对每个文件进行处理,读取其内容并存储到相应的列表中。最后将两个列表组合成一个名为all_data的大列表。

    如果你的txt文件有固定的表头,你可能需要调整read.table()函数的参数。例如,如果你的文件没有表头,你可以去掉header = TRUE。如果文件是以某种特定的分隔符分开的数据,你可以设置sep参数。根据实际情况调整这些参数即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日