【发布时间】:2021-11-30 03:52:31
【问题描述】:
我有一个项目文件夹 (project1),其中包含来自 20 个主题(Sub-001、Sub-002 等)的数据。每个主题的文件夹都包含一个子文件夹(名为 AD),其中包含一个 AD.csv 相关矩阵。
文件夹结构如下所示
├── Sub-001
│ └── AD
│ └── AD.csv
└── Sub-002
└── *
我想编写一个 for 循环,迭代地进入每个主题的 AD 文件夹,将 AD.csv 矩阵从宽改成长,并将重新整形的矩阵保存为一个新的 subj_AD_reshape.csv 文件,以主题的 ID 命名(例如, Sub-001_AD_reshape.csv),在主题文件夹中。
我写的代码:
files<-list.files("group/S/project1/")
subjects<-list.dirs(path=files, full.names=T, recursive=F)
subj.AD<-subjects/"AD"
for (subj.AD in 1:length(subjects)) {
df<-read.csv("matrix.csv", sep="", header=F)
df.matrix<-as.matrix(df)
df.matrix[lower.tri(df.matrix)]<-NA
df.matrix.melt<-as.data.frame(reshape2::melt(df.matrix, na.rm=T))
write.csv(df.matrix.melt, file="subjects/Subject_AD_reshaped.csv))
}
此代码不起作用主要是因为 R 似乎无法识别用于输入和输出的 AD 文件夹。编写这个 for 循环的最佳方式是什么?
【问题讨论】:
-
1)
subj.AD<-file.path(subjects, "AD") 2) 你正在循环subjects,但是上一条指令中定义的变量现在是迭代变量(subj.AD从未真正使用过)3) 你读过"matrix.csv"一遍又一遍。