1

txtファイルの2つのタイプ(a + b)のコピーがたくさんあります。つまり:

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し、目的の出力に応じてファミリの1つを使用します。

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 に答える