我有10个.dat
文件,它们对应于10个时间步长的x-y值。文件名具有以下模式:tstepxx.dat
。例如,tstep01
,tstep35
,tstep55
,...。 xx
不遵循任何命令。我想对所有文件执行相同的操作。我正在寻找一种方法,使每次操作都不重复10次。例如,要读取和命名它们,我已经尝试过:
n <- c(01, 35, 55, 78, 90, 120, 150, 175, 190, 215)
For (i in n) {
paste0("data+", i) <- read.table(file = sprintf("tstep%s.dat", i))
colnames(paste0("data+", i)) <- c("x","h")}
或
for( n in i) {
paste0("data+", i) <- read.table(file = paste0("tstep",n,".dat"))
}
但是他们都不起作用。正确的做法是什么?感谢您的帮助。
答案 0 :(得分:1)
嗨!您可以将文件保存在一个文件夹中。然后用正则表达式列出所有使用您的特定名称的文件,然后使用purrr
包和map
函数读取所有找到的文件。 map
的优点是您可以将参数传递给read.table
函数。这是示例代码:
# load libraries
library(purrr)
# list of file paths
files <- list.files(path="./input/.", pattern="tstep\\d{2}\\.dat", full.names=T)
# list of loaded data
data <- map(files, read.table)