1

こんにちは、次のRスクリプトがあります

emboss<-read.table("emboss_002.ss",header=T)
x<-table(emboss[,2],emboss[,3])/NROW(emboss[,3])
y<-as.vector(t(x))
nms <- expand.grid(colnames(x), rownames(x))
names(y) <- paste( nms[,2],nms[,1],sep="")
write.table(t(y), file = "nontpsec.csv",append=TRUE)

emboss_[i].ss という 300 以上のファイルがあります。

フォルダーをループして、すべてのファイルに対してこのスクリプトを実行するにはどうすればよいですか? 各出力は同じ .csv ファイルに入ります。

ところで-これが私のデータフレームです(x)

x

              C           E           H
  A 0.057971014 0.017391304 0.026086957
  C 0.005797101 0.002898551 0.002898551
  D 0.046376812 0.000000000 0.002898551
  E 0.063768116 0.002898551 0.020289855
  F 0.011594203 0.005797101 0.005797101
  G 0.069565217 0.002898551 0.002898551
  H 0.028985507 0.000000000 0.000000000
  I 0.017391304 0.008695652 0.002898551
  K 0.014492754 0.002898551 0.002898551
  L 0.043478261 0.011594203 0.034782609
  M 0.005797101 0.002898551 0.002898551
  N 0.017391304 0.000000000 0.005797101
  P 0.055072464 0.000000000 0.000000000
  Q 0.046376812 0.002898551 0.008695652
  R 0.049275362 0.011594203 0.023188406
  S 0.043478261 0.005797101 0.002898551
  T 0.034782609 0.017391304 0.014492754
  V 0.037681159 0.014492754 0.008695652
  W 0.014492754 0.008695652 0.002898551
  Y 0.026086957 0.008695652 0.011594203

どうもありがとう!

4

1 に答える 1

4

これはテストしていないので、少しずれている可能性があります。新しい関数を作成し、すべてのファイルを収集して、各ファイルに関数を適用します。

runForAll <- function(x) {
  emboss <- read.table(x,header=T)
  x <- table(emboss[,2],emboss[,3])/NROW(emboss[,3])
  y <- as.vector(t(x))
  nms <- expand.grid(colnames(x), rownames(x))
  names(y) <- paste( nms[,2],nms[,1],sep="")
  return(t(y))
}

my.files <- list.files(pattern = ".ss")
outputs <- lapply(my.files, FUN = runForAll)   

library(plyr)
one.header.output <- rbind.fill.matrix(outputs)
write.table(one.header.output, file = "nontpsec.csv")

から実行することもできますR CMD

于 2013-06-07T09:48:37.710 に答える