r - Transform complex data frame -


i have data frame 1st column (weights) contains list (of data frames?):

> head(data$weights)  > data <- structure(list(a373r11 = structure(list(signature.1a = 0, signature.1b = 0,      signature.2 = 0, signature.3 = 0.151631702143023, signature.4 = 0.149799882118262,      signature.5 = 0, signature.6 = 0, signature.7 = 0.0634912587993959,      signature.8 = 0, signature.9 = 0.173189155080817, signature.10 = 0,      signature.11 = 0, signature.12 = 0, signature.13 = 0, signature.14 = 0,      signature.15 = 0, signature.16 = 0, signature.17 = 0, signature.18 = 0,      signature.19 = 0, signature.20 = 0, signature.21 = 0.0905517653558877,      signature.r1 = 0, signature.r2 = 0, signature.r3 = 0, signature.u1 = 0.155590748898003,      signature.u2 = 0.145955461287919), .names = c("signature.1a",  "signature.1b", "signature.2", "signature.3", "signature.4",  "signature.5", "signature.6", "signature.7", "signature.8", "signature.9",  "signature.10", "signature.11", "signature.12", "signature.13",  "signature.14", "signature.15", "signature.16", "signature.17",  "signature.18", "signature.19", "signature.20", "signature.21",  "signature.r1", "signature.r2", "signature.r3", "signature.u1",  "signature.u2"), row.names = "a373r11", class = "data.frame"),      a373r13 = structure(list(signature.1a = 0, signature.1b = 0,          signature.2 = 0, signature.3 = 0.221014874027829, signature.4 = 0,          signature.5 = 0, signature.6 = 0, signature.7 = 0, signature.8 = 0.279252211893692,          signature.9 = 0, signature.10 = 0, signature.11 = 0,          signature.12 = 0, signature.13 = 0, signature.14 = 0,          signature.15 = 0, signature.16 = 0, signature.17 = 0,          signature.18 = 0, signature.19 = 0.115216422668955, signature.20 = 0,          signature.21 = 0, signature.r1 = 0, signature.r2 = 0,          signature.r3 = 0.0636987713225648, signature.u1 = 0.108875099907467,          signature.u2 = 0), .names = c("signature.1a", "signature.1b",      "signature.2", "signature.3", "signature.4", "signature.5",      "signature.6", "signature.7", "signature.8", "signature.9",      "signature.10", "signature.11", "signature.12", "signature.13",      "signature.14", "signature.15", "signature.16", "signature.17",      "signature.18", "signature.19", "signature.20", "signature.21",      "signature.r1", "signature.r2", "signature.r3", "signature.u1",      "signature.u2"), row.names = "a373r13", class = "data.frame"),      a373r3 = structure(list(signature.1a = 0, signature.1b = 0,          signature.2 = 0, signature.3 = 0.0795605471131758, signature.4 = 0.0973130562439999,          signature.5 = 0, signature.6 = 0, signature.7 = 0, signature.8 = 0.249674548796242,          signature.9 = 0.0725013504411567, signature.10 = 0, signature.11 = 0.064665155855146,          signature.12 = 0, signature.13 = 0, signature.14 = 0,          signature.15 = 0, signature.16 = 0, signature.17 = 0,          signature.18 = 0, signature.19 = 0, signature.20 = 0,          signature.21 = 0, signature.r1 = 0, signature.r2 = 0,          signature.r3 = 0.0703546703126821, signature.u1 = 0.21753544296676,          signature.u2 = 0.0739201832004727), .names = c("signature.1a",      "signature.1b", "signature.2", "signature.3", "signature.4",      "signature.5", "signature.6", "signature.7", "signature.8",      "signature.9", "signature.10", "signature.11", "signature.12",      "signature.13", "signature.14", "signature.15", "signature.16",      "signature.17", "signature.18", "signature.19", "signature.20",      "signature.21", "signature.r1", "signature.r2", "signature.r3",      "signature.u1", "signature.u2"), row.names = "a373r3", class = "data.frame"),      a373r5 = structure(list(signature.1a = 0, signature.1b = 0,          signature.2 = 0, signature.3 = 0.113996509522102, signature.4 = 0.114874220936966,          signature.5 = 0.142056872670519, signature.6 = 0, signature.7 = 0,          signature.8 = 0.208376707959741, signature.9 = 0.0744527503782136,          signature.10 = 0, signature.11 = 0, signature.12 = 0,          signature.13 = 0, signature.14 = 0, signature.15 = 0.0771902641012979,          signature.16 = 0, signature.17 = 0, signature.18 = 0,          signature.19 = 0, signature.20 = 0, signature.21 = 0,          signature.r1 = 0, signature.r2 = 0, signature.r3 = 0,          signature.u1 = 0.0673567355607731, signature.u2 = 0), .names = c("signature.1a",      "signature.1b", "signature.2", "signature.3", "signature.4",      "signature.5", "signature.6", "signature.7", "signature.8",      "signature.9", "signature.10", "signature.11", "signature.12",      "signature.13", "signature.14", "signature.15", "signature.16",      "signature.17", "signature.18", "signature.19", "signature.20",      "signature.21", "signature.r1", "signature.r2", "signature.r3",      "signature.u1", "signature.u2"), row.names = "a373r5", class = "data.frame"),      a373r9 = structure(list(signature.1a = 0, signature.1b = 0,          signature.2 = 0, signature.3 = 0.116847300193985, signature.4 = 0,          signature.5 = 0.21624751052703, signature.6 = 0, signature.7 = 0,          signature.8 = 0.252498230882402, signature.9 = 0, signature.10 = 0,          signature.11 = 0.119495912880994, signature.12 = 0, signature.13 = 0,          signature.14 = 0, signature.15 = 0, signature.16 = 0,          signature.17 = 0, signature.18 = 0, signature.19 = 0,          signature.20 = 0, signature.21 = 0, signature.r1 = 0,          signature.r2 = 0, signature.r3 = 0.0725549911220892,          signature.u1 = 0, signature.u2 = 0), .names = c("signature.1a",      "signature.1b", "signature.2", "signature.3", "signature.4",      "signature.5", "signature.6", "signature.7", "signature.8",      "signature.9", "signature.10", "signature.11", "signature.12",      "signature.13", "signature.14", "signature.15", "signature.16",      "signature.17", "signature.18", "signature.19", "signature.20",      "signature.21", "signature.r1", "signature.r2", "signature.r3",      "signature.u1", "signature.u2"), row.names = "a373r9", class = "data.frame"),      a512r19 = structure(list(signature.1a = 0.109490572493859,          signature.1b = 0, signature.2 = 0, signature.3 = 0, signature.4 = 0.22010156823306,          signature.5 = 0, signature.6 = 0, signature.7 = 0, signature.8 = 0,          signature.9 = 0, signature.10 = 0, signature.11 = 0,          signature.12 = 0, signature.13 = 0, signature.14 = 0,          signature.15 = 0, signature.16 = 0, signature.17 = 0,          signature.18 = 0, signature.19 = 0, signature.20 = 0,          signature.21 = 0, signature.r1 = 0, signature.r2 = 0,          signature.r3 = 0.150943894106973, signature.u1 = 0.248556502648564,          signature.u2 = 0.119306892617062), .names = c("signature.1a",      "signature.1b", "signature.2", "signature.3", "signature.4",      "signature.5", "signature.6", "signature.7", "signature.8",      "signature.9", "signature.10", "signature.11", "signature.12",      "signature.13", "signature.14", "signature.15", "signature.16",      "signature.17", "signature.18", "signature.19", "signature.20",      "signature.21", "signature.r1", "signature.r2", "signature.r3",      "signature.u1", "signature.u2"), row.names = "a512r19", class = "data.frame")), .names = c("a373r11",  "a373r13", "a373r3", "a373r5", "a373r9", "a512r19")) 

here, each row contains sample, , each column contains score particular signature:

> data[1]  $a373r11         signature.1a signature.1b signature.2 signature.3 signature.4 signature.5 signature.6 signature.7 signature.8 signature.9 signature.10 signature.11 a373r11            0            0           0   0.1516317   0.1497999           0           0  0.06349126           0   0.1731892            0            0         signature.12 signature.13 signature.14 signature.15 signature.16 signature.17 signature.18 signature.19 signature.20 signature.21 signature.r1 signature.r2 a373r11            0            0            0            0            0            0            0            0            0   0.09055177            0            0         signature.r3 signature.u1 signature.u2 a373r11            0    0.1555907    0.1459555 

i transfer dataframe following structure:

sample  signature  score a373r11  signature.1a  0 a373r11  signature.1b  0 [...] a373r13  signature.1a  0 a373r13  signature.1b  0 [...] 

can point me in right direction?

two approaches:

1) data.table-package

using:

library(data.table) melt(rbindlist(data, idcol = 'sample'),      id = 'sample', variable.name = 'signature', value.name = 'score') 

gives:

      sample    signature      score   1: a373r11 signature.1a 0.00000000   2: a373r13 signature.1a 0.00000000   3:  a373r3 signature.1a 0.00000000   4:  a373r5 signature.1a 0.00000000   5:  a373r9 signature.1a 0.00000000  ---                                 158: a373r13 signature.u2 0.00000000 159:  a373r3 signature.u2 0.07392018 160:  a373r5 signature.u2 0.00000000 161:  a373r9 signature.u2 0.00000000 162: a512r19 signature.u2 0.11930689 

2) base r

using:

dat2 <- do.call(rbind, dat) reshape(dat2, idvar = 'sample', ids = row.names(dat2),         varying = list(1:ncol(dat2)), times = colnames(dat2),         timevar = 'signature', v.names = 'score',         new.row.names = null, direction = 'long') 

gives:

                        signature      score  sample a373r11.signature.1a signature.1a 0.00000000 a373r11 a373r13.signature.1a signature.1a 0.00000000 a373r13 a373r3.signature.1a  signature.1a 0.00000000  a373r3 a373r5.signature.1a  signature.1a 0.00000000  a373r5 a373r9.signature.1a  signature.1a 0.00000000  a373r9  .....  a373r13.signature.u2 signature.u2 0.00000000 a373r13 a373r3.signature.u2  signature.u2 0.07392018  a373r3 a373r5.signature.u2  signature.u2 0.00000000  a373r5 a373r9.signature.u2  signature.u2 0.00000000  a373r9 a512r19.signature.u2 signature.u2 0.11930689 a512r19 

note:

it better not give data same name function. see ?data.


Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -