我遇到了以下问题,到目前为止我没有找到合适的答案。
我在以下目录中的子文件夹中存储了大量数据集:
C:/Users/Desktop/Data Generation
子文件夹正在遵循这种模式:
/Model 1/Model_1_250skew1mar1
模型可能从1变为3;以及250到750;偏斜1到3;和3月3日。
例如:/Model 3/Model_3_750skew2mar2 or /Model 2/Model_2_250skew3mar1
在这些子文件夹中,我获得了数据集:M1_1
至M1_1000
或模型2 M2_1
至M2_1000
现在我想获取我的数据集:M1_1
至M1_1000
并替换缺少的值,并根据我获取它们的位置将这些数据集保存在新目录中:
C:/Users/Desktop/Data Generation/ NA /Model 1/Model_1_250skew1mar1
我可以使用以下代码为我的一个子目录执行此操作:
files_M_neu <- list.files(path="C:/Users/Desktop/Data Generation/Model 1/Model_1_250skew1mar1",
pattern="M1_*[^list].dat", recursive=TRUE, full.names=TRUE)
dir.create("C:/Users/Desktop/Data Generation/NA")
dir.create("C:/Users/Desktop/Data Generation/NA/Model 1")
dir.create("C:/Users/Desktop/Data Generation/NA/Model 1/Model_1_250skew1mar1")
for(i in 1:length(files_M_neu)){
data <- read.table(files_M_neu[i], header=TRUE)
fix_missing <- function(x) {
x[x == 999] <- NA
x
}
data <- fix_missing(data)
write.table(data, paste("C:/Users/Desktop/Data Generation/NA/Model 1/Model_1_250skew1mar1/data[",i,"].dat"),
sep="\t", row.names = FALSE, col.names = FALSE)
rm(data)
}
我如何自动执行此过程,以便我没有上述代码54次?我想要一个干净的方法:获取我的文件,替换缺失并根据我从中获取文件的目录保存文件。
正如你可能猜到的那样,我是R的新手,但我现在尝试了不同的东西,而且我没有办法让你更接近解决方案。
答案 0 :(得分:0)
这是一个解决方案,它使用list.dirs()
递归读取wd下的所有目录,然后在wd / NA /下创建相同的目录树,最后使用dir()
或{{ 1}}具有完整的相对名称来处理文件并将它们保存在wd / NA /每个目录下:
list.files()