-1

わかりました、ありがとうございます。質問をもう一度始めます。

これは私のDFです

df = read.table(text = '    replicate    size   fh
ms03a_T0_r1  397.51 1099
ms03a_T0_r1  695.46    8
ms03a_T0_r1  708.76 1409
ms03a_T0_r1 1203.98  102
ms03a_T0_r2  397.52  749
ms03a_T0_r2  493.97   23
ms03a_T0_r2  538.43   12
ms03a_T0_r3  397.49  638
ms03a_T0_r3  399.84    9
ms03a_T0_r3  404.95   33
ms03a_T0_r3  406.85   40 ', header = T)

Rn <- as.numeric(length(levels(ol$replicate)))
# just to calculate the number of samples

これから、「複製」変数の値が *_r1 の行、*_r2 の行、*_r3 の行のみを含む 3 つの新しいデータセットをそれぞれ作成したいと思います。

これらのコマンドでこれを行うと思いました:

for (i in 1:Rn){

  x <- df[as.character(sub('.*_r', '', as.character(replicate))) %in% i];

  outfile <- paste("rep_",i,"_edited.txt",sep="")
  write.table(x,quote=FALSE,sep=", ",outfile)
}

しかし、rのdfオブジェクトではなく、.txt出力を取得できます。このようにして、「スクリプト」の次のステップに進むには、それらをrに再度インポートする必要があります。それらを自動的にインポートするためにrを設定する方法がわかりません

4

1 に答える 1

0

私の推測では、あなたはこれを望んでいます:

df = read.table(text = '    replicate    size   fh
  ms03a_T0_r1  397.51 1099
  ms03a_T0_r1  695.46    8
  ms03a_T0_r1  708.76 1409
  ms03a_T0_r1 1203.98  102
  ms03a_T0_r2  397.52  749
  ms03a_T0_r2  493.97   23
  ms03a_T0_r2  538.43   12
  ms03a_T0_r3  397.49  638
  ms03a_T0_r3  399.84    9
 ms03a_T0_r3  404.95   33
 ms03a_T0_r3  406.85   40 ', header = T)

library(data.table)
dt = data.table(df)

special.ids = c(1,3)
dt[as.numeric(sub('.*_r', '', as.character(replicate))) %in% special.ids]
#     replicate    size   fh
#1: ms03a_T0_r1  397.51 1099
#2: ms03a_T0_r1  695.46    8
#3: ms03a_T0_r1  708.76 1409
#4: ms03a_T0_r1 1203.98  102
#5: ms03a_T0_r3  397.49  638
#6: ms03a_T0_r3  399.84    9
#7: ms03a_T0_r3  404.95   33
#8: ms03a_T0_r3  406.85   40

デフォルトで文字列を因数に変換as.characterするため、 が必要であることに注意してください。read.tableすでに文字列である場合、実際のデータには必要ないかもしれません。

二度目に読んだら、これが欲しくなるかも?

split(df, sub('.*_r', '', as.character(df$replicate)))

OP - 質問を修正する必要があります。

于 2013-07-17T19:20:42.183 に答える