【发布时间】:2013-09-11 21:11:50
【问题描述】:
我想遍历多个文件并对它们应用一个函数。问题是这些文件都位于不同但名称相似的目录中。通路模式类似,但数量会根据它所涉及的家庭而变化。
例如,我的代码是这样写的:
for(i in 1:numfiles) {
olddata <- read.table(paste("/home/smith/Family", i, "/Family", i, ".txt", sep="\t"),
header=T)
# FUNCTION GOES HERE
write.table(newdata,
paste("/home/smith/Family", i, "/Family", i, "test.txt",
sep = ",", quote=F, row.names=F)
}
我遇到的问题是家庭号码没有按数字顺序排列。有些仅标有数字(例如:2),而另一些则在该数字后附加了一个字母(例如:1a)
在每个家庭子目录(即家庭i)中,我想在同一个文件中调用(文件名完全相同,但编号(i)根据它所指的家庭而变化)。我想遍历这些特定文件。例如...对于家庭 1a,文件在此处:“/home/smith/Family1a/Family1a.txt”,但对于家庭 2,文件在此处:“/home/smith/Family2/Family2.txt”。
另外,R 不喜欢我使用 numfiles。
【问题讨论】:
-
不应该是:
paste0("/home/smith/Family",i,"/Family",i,".txt"),sep="\t"看来您正在粘贴带有制表符分隔符的文件路径。write.table也一样。 -
你是对的。但是,“for(i in 1:numfiles)”的用法仍然存在问题……我使用正确吗?
-
@user2726449 是 all 您希望包含在 smith 文件夹下的子目录中的文件,并且 only您想要的文件格式为
"Family....txt"? -
所有 Family 子目录都在 Smith 目录/文件夹下。在每个家庭子目录(即家庭i)中,我想调用同一个文件(文件名完全相同,但编号(i)根据它所指的家庭而变化)。我想遍历这些特定文件。例如...对于家庭 1a,文件在此处:“/home/smith/Family1a/Family1a.txt”,但对于家庭 2,文件在此处:“/home/smith/Family2/Family2.txt”。
-
你想忽略
Family1a/Family2.txt吗?意思是:文件名总是目录名+txt吗?还是要读取子目录下的所有txt文件?