0

我在成对的文件上运行以下代码,如a1.txt and b1.txt, a2.txt and b2.txt, .... a999.txt and b999.txt

dostuff <- function(x) 
{
files <- list.files(pattern=paste('.', x, '\\.txt', sep=''))
a <- read.table(files[1],header=FALSE)  #file a1.txt 
G <- a$V1-a$V2
b <- read.table(files[2],header=FALSE) #file b1.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:999,dostuff)
Error in tapply(b$V3, b$V2, FUN = length) : arguments must have same length

我假设这是因为一对中的两个文件都没有标题,所以ahasV1 V2bhas V1 V2 V3。但是,当我在小批量文件上运行此错误时,不会出现此错误,0:3并且这些结果的结果与我分别进行每次分析一样,手动清除整个代码运行之间的环境。

a1 b1我相信一旦文件从toa10 b10及以上运行,问题就会出现。因为我认为循环对选择哪些文件感到困惑。只要我运行a0 b0to ,这个问题就会消失a9 b9

最佳解决方案?

4

1 回答 1

2

当我尝试处理的批处理中有一些杂散文件没有预期的行数时,我遇到了类似的问题。我建议先检查所有文件的尺寸,看看它们是否都同意。我的猜测是文件 0-3 的格式都正确,但 [0, 999] 中的某些文件可能不是。

尝试检查所有文件的尺寸是否相同:

dims2 <- list()
dims3 <- list()
doDims <- function(x){
  files <- list.files(pattern=paste('.', x, '\\.txt', sep=''))
  a <- read.table(files[1],header=FALSE)  #file a1.txt 
  G <- a$V1-a$V2
  b <- read.table(files[2],header=FALSE) #file b1.txt
  as.factor(b$V2)
  dims2[x] <- dim(b$V2)
  dims3[x] <- dim(b$V3)
}

然后您可以查看所有维度是否确实符合您的预期。

于 2012-04-13T14:56:00.490 回答