преобразование named-вектора (из TukeyHSD) в таблицу - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть именованный вектор, который является частью вывода TukeyHSD:

"a-b" "a-c" "b-c"
  1     2     3

Есть ли хороший способ преобразовать его в

    a  b  c
  -----------
a |    1  2
b | 1     3
c | 2  3  

?или мне просто взломать его и разбить строки и так далее

заранее спасибо

вот вывод dput:

c( ba = 0.132736594352255, ca = 0.999921265128142, да = 0.801948385014406, еа = 1, фа = 0.999999993422497, га = 0.999994493135286, га = 0.210958663031597, Ia * тысяча двадцать-один * JA * тысяча двадцать-два * ка = 0.999999989980955, ма = 0.999999999847843, на * +1025 * ра * +1026 * CB = 0.0648789689498736, дБ= 0.00274896267890112, ея = 0.217149424299426, фб = 0.0563761493313133, гб = 0.830288996389741, полупансион = 1.37129030743921e-05, И.Б. = 0.292237803866045, ДБ = 0.00203363512911592, кб = 0.429789314314218, Мб = 0.893873188901534, пь = 1.26129400479513e-07, рь = 0.0148404046180679, DC = 0.999413140979136, ки = 0.999983194608954, Ь = 0.999999593776059, дс = 0.99450256286738, Нс = 0.995948206958786, IC = 2.12711732894277e-06, х = 0.999999999953707, кс = 0.99849672006282, тс = 0.999945483624277, н.д. = 0.159133209452148, шт = 0.981199963747256, изд = 0.894189247372541, FD = 0.927465343408835, Г.Д. = 0.679255997014174, HD= 1, ID = 2.48392421076105e-08, JD = 0.999592315002344, кД = 0.697136248874886, мкр = 0.958196387101045, й = 0.823800464142429, П.Д. = 0.999990479586194, Fe = 0.999999999789834, GE = 0.999995787557262, он = 0.53201292841468, е = 1.03081411517714e-05, JE = 0.995077423573089, KE = 0.999999990349601, мне = 0.999999999728218, пе = 0.00827803916192571, ре = 0.801239862126994, гс = 0.999679361401266, ХФ = 0.464857165472924, если = 4.11179760018143e-07, JF = 0.998610646241627, кф = 0.999980920365226, М.Ф. = 0.999999813932987, Н.Ф. = 0.00531987647573118, пф = 0.848849590006324, рт.ст. = 0.341590849630092, И.Г.* +1078 * JG = 0.914056068033521, кг = 0.999999999582086, мг = 0.999999999998442, нг * тысяча восемьдесят два * пг * тысяча восемьдесят-три * IH = 1.32359012638972e-10, JH * тысяча восемьдесят пять * кч * тысяча восемьдесят-шесть * ки = 0.909323296631876, пНа = 0.329509866222374, фот * тысяча восемьдесят девять * ц = 2.4844853951933e-09, ки * +1091 * мили * одна тысяча девяносто-два * п = 1.28862254200612e-10, пи * 1 094 * кДж * тысячу девяносто-пять * MJ * 1 096 * щ * тысяча девяносто семь * р ^ = 0.983802108362677, тк * тысяча девяносто-девять * пк = 0.00201102356142246, рк = 0.638580957139582, нм * 1 102 * PM= 0.857057426831322, pn` = 0.999990553111872)

1 Ответ

0 голосов
/ 27 ноября 2018

Это то, что вам нужно?

library(tidyverse)
stack(x) %>%
    separate(ind, c("x", "y"), sep = "-") %>%
    mutate(
        x = factor(x, levels = sort(union(x, y))),
        y = factor(y, levels = sort(union(x, y)))) %>%
    complete(x, y) %>%
    spread(y, values)
## A tibble: 14 x 15
#   x            a        b        c        d        e        f        g
#   <fct>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
# 1 a     NA       NA       NA       NA       NA       NA       NA
# 2 b      1.33e-1 NA       NA       NA       NA       NA       NA
# 3 c     10.00e-1  6.49e-2 NA       NA       NA       NA       NA
# 4 d      8.02e-1  2.75e-3  9.99e-1 NA       NA       NA       NA
# 5 e      1.00e+0  2.17e-1 10.00e-1  8.94e-1 NA       NA       NA
# 6 f     10.00e-1  5.64e-2 10.00e-1  9.27e-1 10.00e-1 NA       NA
# 7 g     10.00e-1  8.30e-1  9.95e-1  6.79e-1 10.00e-1 10.00e-1 NA
# 8 h      2.11e-1  1.37e-5  9.96e-1  1.00e+0  5.32e-1  4.65e-1  0.342
# 9 i      1.90e-6  2.92e-1  2.13e-6  2.48e-8  1.03e-5  4.11e-7  0.00156
#10 j      9.73e-1  2.03e-3 10.00e-1 10.00e-1  9.95e-1  9.99e-1  0.914
#11 k     10.00e-1  4.30e-1  9.98e-1  6.97e-1 10.00e-1 10.00e-1  1.000
#12 m     10.00e-1  8.94e-1 10.00e-1  9.58e-1 10.00e-1 10.00e-1  1.000
#13 n      1.77e-3  1.26e-7  1.59e-1  8.24e-1  8.28e-3  5.32e-3  0.00551
#14 p      7.39e-1  1.48e-2  9.81e-1 10.00e-1  8.01e-1  8.49e-1  0.590
## ... with 7 more variables: h <dbl>, i <dbl>, j <dbl>, k <dbl>, m <dbl>,
##   n <dbl>, p <dbl>

Обратите внимание, что это заполняет только нижнюю треугольную часть матрицы.Просто скопировать значения в верхнюю треугольную часть.


Пример данных

x <- c("b-a" =  0.132736594352255,"c-a" =  0.999921265128142,
"d-a" =  0.801948385014406,"e-a" =  1,"f-a" =  0.999999993422497,
"g-a" =  0.999994493135286,"h-a" =  0.210958663031597,
"i-a" =  1.8980767408916e-06,"j-a" =  0.973055228316854,
"k-a" =  0.999999989980955,"m-a" =  0.999999999847843,
"n-a" =  0.00176609502582648,"p-a" =  0.738916850855589,
"c-b" =  0.0648789689498736,"d-b" =  0.00274896267890112,
"e-b" =  0.217149424299426,"f-b" =  0.0563761493313133,
"g-b" =  0.830288996389741,"h-b" =  1.37129030743921e-05,
"i-b" =  0.292237803866045,"j-b" =  0.00203363512911592,
"k-b" =  0.429789314314218,"m-b" =  0.893873188901534,
"n-b" =  1.26129400479513e-07,"p-b" =  0.0148404046180679,
"d-c" =  0.999413140979136,"e-c" =  0.999983194608954,
"f-c" =  0.999999593776059,"g-c" =  0.99450256286738,
"h-c" =  0.995948206958786,"i-c" =  2.12711732894277e-06,
"j-c" =  0.999999999953707,"k-c" =  0.99849672006282,
"m-c" =  0.999945483624277,"n-c" =  0.159133209452148,
"p-c" =  0.981199963747256,"e-d" =  0.894189247372541,
"f-d" =  0.927465343408835,"g-d" =  0.679255997014174,
"h-d" =  1,"i-d" =  2.48392421076105e-08,"j-d" =  0.999592315002344,
"k-d" =  0.697136248874886,"m-d" =  0.958196387101045,
"n-d" =  0.823800464142429,"p-d" =  0.999990479586194,
"f-e" =  0.999999999789834,"g-e" =  0.999995787557262,
"h-e" =  0.53201292841468,"i-e" =  1.03081411517714e-05,
"j-e" =  0.995077423573089,"k-e" =  0.999999990349601,
"m-e" =  0.999999999728218,"n-e" =  0.00827803916192571,
"p-e" =  0.801239862126994,"g-f" =  0.999679361401266,
"h-f" =  0.464857165472924,"i-f" =  4.11179760018143e-07,
"j-f" =  0.998610646241627,"k-f" =  0.999980920365226,
"m-f" =  0.999999813932987,"n-f" =  0.00531987647573118,
"p-f" =  0.848849590006324,"h-g" =  0.341590849630092,
"i-g" =  0.00156077688059131,"j-g" =  0.914056068033521,
"k-g" =  0.999999999582086,"m-g" =  0.999999999998442,
"n-g" =  0.00550711110598001,"p-g" =  0.589694361848451,
"i-h" =  1.32359012638972e-10,"j-h" =  0.981457563281897,
"k-h" =  0.217452285021171,"m-h" =  0.909323296631876,"n-h" =  0.329509866222374,
"p-h" =  0.999896413565643,"j-i" =  2.4844853951933e-09,
"k-i" =  4.94704403456447e-05,"m-i" =  0.0101526672020547,
"n-i" =  1.28862254200612e-10,"p-i" =  3.63259988322984e-06,
"k-j" =  0.923957489008565,"m-j" =  0.998615227094082,
"n-j" =  0.0479071931248186,"p-j" =  0.983802108362677,
"m-k" =  1,"n-k" =  0.00201102356142246,"p-k" =  0.638580957139582,
"n-m" =  0.121254171582127,"p-m" =  0.857057426831322,
"p-n" =  0.999990553111872)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...