1

我有两种类型(a + b)的txt文件的许多副本,即:

a1.txt a2.txt a3.txt... and b1.txt b2.txt b3.txt

我的目标是运行一个执行以下操作的 r 脚本:

read.table a1.txt
#run a bunch of code that chops and changes the data and then stores some vectors and data      frames.
w<-results
x<-results
detach a1.txt
read.table b1 .txt 
#run a bunch of code that chops and changes the data and then stores some vectors and data frames.
y<-results
z<-results
model1<-lm(w~y)
model2<-lm(x~z)

每次我想从模型 1 的 1 个斜率和模型 2 的 2 个斜率中提取系数。我想在所有 a 和 b 文本文件对中以自动方式运行此分析,并在另一个文件中建立矢量格式的系数。供以后分析。

到目前为止,我只能从像这样的更简单的分析中得到一些零碎的东西。有没有人知道如何在许多文件上运行这个更复杂的迭代?

编辑:到目前为止尝试但失败了:

your<-function(x) 
{
files <- list.files(pattern=paste('.', x, '\\.txt', sep=''))
a <- read.table(files[1],header=FALSE)
attach(a)
w <- V1-V2
detach(a)
b <- read.table(files[2],header=FALSE)
z <- V1-V2
model <- lm(w~z)
detach(b)
return(model$coefficients[2])
}

slopes <- lapply(1:2, your)
Error in your(1) : object 'V1' not found
4

1 回答 1

3

您可以执行以下操作:

files <- list.files(pattern='.1\\.txt') # get a1.txt and b1.txt

如果你知道你有多少个文件(比如说 10 个),你可以将上面的代码包装在一个函数中,并apply根据你想要的输出使用一个家族:

your.function(x) {
  files <- list.files(pattern=paste('.', x, '\\.txt', sep=''))
  a <- read.table(files[1])
  b <- read.table(files[2])

  w <- ...
  x <- ...

  y <- ...
  z <- ...

  model1 <- lm(w~y)
  model2 <- lm(x~z)

  return(c(model1$coefficients[2], moedl2$coefficients[2]))
}

slopes <- lapply(1:10, your.function)
于 2012-04-12T19:26:48.100 回答