На этот раз это может показаться сложным, но я верю, что для некоторых опытных русификаторов это будет легко сделать. У меня есть матрица вроде этого:Поиск шаблона в матрице и на основе этого деления на значение в имени столбца
> dput(head(yoe))
structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.5,
24.5, 32.6, 32.6, 32.6, 32.6), .Dim = c(6L, 21L), .Dimnames = list(
c("AT1G01050_0", "AT1G01050_1", "AT1G01080_0", "AT1G01080_1",
"AT1G01080_2", "AT1G01080_3"), c("10", "33.95", "58.66",
"84.42", "110.21", "134.16", "164.69", "199.1", "234.35",
"257.19", "361.84", "432.74", "506.34", "581.46", "651.71",
"732.59", "817.56", "896.24", "971.77", "1038.91", "MW")))
я буду использовать таблицу, чтобы лучше объяснить, что я хочу добиться:
10 33.95 58.66 84.42 110.21 134.16 164.69 199.1 234.35 257.19 361.84 432.74 506.34 581.46 651.71 732.59 817.56 896.24
AT1G01050_0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
AT1G01050_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
AT1G01080_0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AT1G01080_1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
AT1G01080_2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
AT1G01080_3 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
971.77 1038.91 MW
AT1G01050_0 0 0 24.5
AT1G01050_1 0 0 24.5
AT1G01080_0 0 0 32.6
AT1G01080_1 0 0 32.6
AT1G01080_2 0 0 32.6
AT1G01080_3 0 0 32.6
Так в первую очередь. В первой строке мы имеем номер 1
в столбце 234.35
. Мы берем это число из colnames
и делим его на число в последнем столбце той же строки. Согласно первому ряду:
234.35/24.5 = 9.56
, и это число переходит к следующей колонке той же строки (должно быть создано, имя может быть "Fold"
).
Код должен пройти все строки, но номер 1
будет находиться в разных столбцах (положениях) в этой матрице.
Я ожидал по крайней мере пары строк кода ... Thx много! Для некоторых из вас это слишком просто .. – Rechlay
@Rechlay Это только потому, что я сталкивался с аналогичными проблемами в прошлом. – akrun