跨多个孔的系列读取,如何崩溃
Series of Reads Across Multiple Wells, How to Collapse
基本上,我创建了一个数据集,如下所示,其中 headers 是 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]]))
解决此问题的最佳方法是什么?我完全错过了什么?!
我们可以使用 tidyr
包中的 gather
函数(您的数据存储在 dat
中):
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
...
基本上,我创建了一个数据集,如下所示,其中 headers 是 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]]))
解决此问题的最佳方法是什么?我完全错过了什么?!
我们可以使用 tidyr
包中的 gather
函数(您的数据存储在 dat
中):
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
...