r - 在 R 中,我将 10 个固定宽度的文本文件分成 8 个部分。如何将 80 个文件拉入,分成各自的文件并组合部分?
问题描述
所以我有 80 个文件名格式为:
P.A3588.ACO.CCLF0.ROW1.ROW30000
P.A3588.ACO.CCLF1.ROW1.ROW30000
P.A3588.ACO.CCLF0.ROW30001.ROW60000
有 80 个固定宽度的文本文件:10 个 CCLF 编号(CCLF0、CCLF1、...、CCLF9)中的每一个都有 8 个部分。我希望能够按 CCLF 编号进行分组,应用列宽向量,并绑定 CCLF 部分的行。
以下是我到目前为止所尝试的。它不起作用,但让我知道我正在尝试什么。
filenames <- list.files(dataPath)
names <- substr(filenames,13,17)
CCLF1_width <- c(13,6,11,2,10,10,1,1,7,7,2,17,1,2,2,4,1,10,10,10,10,10,2,10,10,10,11,2,2,1,1,1)
CCLF2_width <- c(13,10,11,2,10,10,4,10,5,11,6,10,10,24,17,2,2,2,2,2)
CCLF3_width <- c(13,11,2,2,7,10,11,6,10,10,1)
CCLF4_width <- c(13,11,2,1,2,7,11,6,10,10,7,1)
CCLF5_width <- c(13,10,11,2,10,10,3,2,2,1,2,10,10,5,15,1,7,10,10,2,2,2,10,10,40,11,17,24,2,2,2,2,2,2,7,7,7,7,7,7,7,7,1)
CCLF6_width <- c(13,10,11,2,10,10,1,2,10,10,5,15,1,10,10,2,2,2,10,10,40,11,17,2)
CCLF7_width <- c(13,11,11,2,10,2,20,1,1,24,9,2,20,13,2,10,10,12,9)
CCLF8_width <- c(11,2,3,5,10,1,1,3,2,2,10,10,10,30,15,40,1,1)
CCLF9_width <- c(11,11,10,10,12)
CCLF0_width <- c(11,11)
for (i in length(filenames)){
assign(paste0(substr(filenames,13,17)), read_fwf(grepl("CCLF1",filenames),paste0(i,"_width")))
}
解决方案
您可以使用list.files
with 参数recursive = True
和full.names = TRUE
获取所有 80 个 txt 文件的文件路径,然后使用lapply
or for
withread.table
读取一个list
具有 80 个元素的所有文件,do.call(rbind,your_list)
用于将列表组合到一个数据帧。
filename<-list.files(folder_path,recursive = T,pattern = ".txt",full.names = T)
all_file<-lapply(filename,read.table)
df<-do.call(rbind,all_file)
推荐阅读
- spring-boot - Springboot应用程序未连接到rabbitmq
- python - 无法弄清楚我的python中的错误是什么
- java - JavaFX 获取 StackPane 的样式表变量/背景颜色
- c# - log4net 不输出任何内容
- python - 如何使用 python 列出我的 azure 帐户中的所有资源组?
- tensorflow - 为什么我的电脑没有检测到 GPU 和使用 CPU?
- c# - 如何在 LINQ 中组合对象属性中的列表?
- python - 计算两个日期之间的差异,不包括python中的周末?
- python - 使用 print(x for x in list) 打印意外结果?
- python - Python在linux中运行时找不到模块