2017-06-14 7 views
0

本質的には、私が作成したデータセットは次のようになります。ヘッダは384ウェルプレートの各ウェルの波長です。複数のウェルにまたがる一連の読み取り、折りたたみ方法

> minipeaks 
    Wavel. X280 X282 X284 X286 X288 X290 X292 X294 X296 
1  A1 34 62 57 52 48 89 104 134 142 
2  A2 34 61 56 52 72 89 102 134 140 
3  A3 68 62 84 105 119 134 185 227 266 
4  A4 68 92 85 104 120 133 186 210 247 
5  A5 103 123 141 182 191 222 269 361 424 
6  A6 103 124 113 131 143 178 206 264 316 
7  A7 136 153 141 156 192 244 285 364 404 
8  A8 136 124 142 157 167 199 245 322 368 
9  A9 170 155 171 208 215 244 327 418 478 
10 A10 136 155 169 182 192 222 287 344 423 

私がプロットできるdata.frameの作成に問題があります。私は、各行に対して列2:10をとり、考慮する波長のシーケンスを作成し、ウェル名のリピートベクトルを作成し、これをdata.frameに変更する必要があると推測しています。

はこれまでのところ、私は plyr::ldplyを使用して実行している

を試してみたが、私は次のエラーを取得しておくので、あまり成功を持っている:

> waves <- seq(from = 280, to = 850, by = 2)  
> ldply(minipeaks, function(z) { 
+ data.frame(wavelength = waves[1:(dim(z)[2]-1)], 
+    well = rep(as.character(z$Wavel.), (dim(z)[2]-1)), 
+    value = as.numeric(z[, 2:dim(z)[2]])) 
+ }) 
Error in 1:(dim(z)[2] - 1) : argument of length 0 
Called from: data.frame(wavelength = waves[1:(dim(z)[2] - 1)], well = rep(as.character(z$Wavel.), 
    (dim(z)[2] - 1)), value = as.numeric(z[, 2:dim(z)[2]])) 

をこの問題を解決する最良の方法かもしれませんか?私は何が完全に欠けているのですか?

答えて

1

我々はtidyrパッケージ(あなたのデータはdatに保存されている)からgather機能を使用することができます。

library(tidyr) 
gather(dat, sequence, read, -Wavel.) 

    Wavel. sequence read 
1  A1  X280 34 
2  A2  X280 34 
3  A3  X280 68 
4  A4  X280 68 
5  A5  X280 103 
6  A6  X280 103 
... 
関連する問題