我在写一个循环,每次运行ega0.txt和b0.txt需要两个文件。我正在运行这100多个从a0.txt和b0.txt运行到a999.txt和b999.txt的文件。我使用的模式函数工作完美,如果我在目录中运行文件a0和b0到a9和b9只有文件对0-9。但是当我在目录中放置更多文件并从'0:10开始运行时,循环失败并将文件中的向量混淆。我认为这是thepattern`监守我即使用循环加载文件对
list.files(pattern=paste('.', x, '\\.txt', sep=''))
这仅查找有'.',x,//txt.
所以,如果'.'=a
和x=1
找到文件a1
文件。但我认为它在a0
和a10
之间混淆,当我运行更多的文件。但我似乎无法找到合适的循环,它将扫描文件,该文件也会查找高达a999
和b999
的文件。
任何人都可以帮助更好的方式来做到这一点?代码如下。
dostuff <- function(x)
{
files <- list.files(pattern=paste('.', x, '\\.txt', sep=''))
a <- read.table(files[1],header=FALSE) #file a0.txt
G <- a$V1-a$V2
b <- read.table(files[2],header=FALSE) #file b0.txt
as.factor(b$V2)
q <- tapply(b$V3,b$V2,Fun=length)
H <- b$V1-b$V2
model <- lm(G~H)
return(model$coefficients[2],q)
}
results <- sapply(0:10,dostuff)
Error in tapply(b$V3, b$V2, FUN = length) : arguments must have same length
我会使用粘贴('^。',x,'\\。txt $',sep ='')作为模式。 – 2012-04-14 13:27:32