r - 对具有相似模式的所有文件应用循环 - 对于 R 中的许多模式名称
问题描述
我有一组 .csv 文件,它们对应于不同年份的特定电台。我想创建一个模式来寻找从第 10 个字符到 .csv 的所有相似文件。到目前为止,我有以下内容:
files =list.files(pattern = ".csv")
files
[1] "data2011_AAST0100.csv" "data2011_ADST0500.csv" "data2011_AETR0100.csv"
[2] "data2011_AIST0200.csv" "data2011_AKST0200.csv" "data2011_AMST0100.csv"
[3] "data2012_AAST0100.csv" "data2012_AETR0100.csv" "data2012_AIST0200.csv"
[4] "data2012_AMST0100.csv" "data2012_ANST0100.csv" "data2012_APST0300.csv"
[5] "data2013_AAST0100.csv" "data2013_AETR0100.csv" "data2013_AIST0200.csv"
[6] "data2013_AMST0100.csv" "data2013_ANST0100.csv" "data2013_APST0300.csv"
但是,我想要这样的东西,它基本上在第 10 个字符之后寻找所有相似的模式名称。
files =list.files(pattern = "AAST")
files
[1] "data2011_AAST0100.csv" "data2012_AAST0100.csv" "data2013_AAST0100.csv"
我的目标是对所有站点应用以下循环。
outfile = ""
for (i in 1:length(files)){
tempData = read.csv(files[i], header = FALSE, sep="", na.strings=c(" "))
colnames(tempData) = unlist(headers)
df[is.na(tempData)] = NA
outfile <- rbind(outfile, tempData)
}
解决方案
您可以通过调用获取所有文件名,然后从包中过滤它们,而不是使用pattern
in 中的参数。list.files
list.files
str_extract_all()
tidyverse
library(tidyverse)
# test <- list.files()
test <- c("data2011_AAST0100.csv", "data2011_ADST0500.csv", "data2011_AETR0100.csv",
"data2011_AIST0200.csv", "data2011_AKST0200.csv", "data2011_AMST0100.csv")
unique(unlist(str_extract_all(test, pattern = '(?<=\\_).{4}')))
[1] "AAST" "ADST" "AETR" "AIST" "AKST" "AMST"
这假定您要提取的名称始终是 4 个字母。
推荐阅读
- python - Python:将一个数据框的值添加到另一个数据框的某些行
- api - Swift 4 tableView API 分页
- java - 无法从随机文件中解码数据
- c# - 如何在 ASP.NET Core 中定义和使用不同的用户类型
- python - 如何在 python 中使用 slice 将元素插入到不断增长的列表的末尾
- php - 如何将年龄转换为年龄范围并插入数据库
- c# - Swagger UI 显示生成的客户端
- reactjs - 在 React 的另一个输入值中发送 LI 值
- python - Keras 与形状连接 [(1, 8), (None, 32)]
- python - Python 3,post 方法误导