我在寫一個循環,每次運行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