Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-将邻接数据帧转换为边列表类型列表_R_List_Dataframe_Type Conversion_Adjacency List - Fatal编程技术网

R-将邻接数据帧转换为边列表类型列表

R-将邻接数据帧转换为边列表类型列表,r,list,dataframe,type-conversion,adjacency-list,R,List,Dataframe,Type Conversion,Adjacency List,我需要将具有命名列和行(NxN维度)的数据帧更改为边缘列表 例如,数据框中的矩阵为: C1 C2 C3 C4 Ane 0 1 31 0 Jol 4 14 2 0 Ruf 3 3 11 6 Rei 1 7 0 0 我想将其更改为列表(如边缘列表): 我发现的其他线程似乎只有列名/数据帧不包含邻接矩阵 我试着把它做成一个图,然后得到.edgelist,也试过[order(df[,1],df[1,]),drop=FALSE],但这些

我需要将具有命名列和行(NxN维度)的数据帧更改为边缘列表

例如,数据框中的矩阵为:

     C1  C2  C3  C4
Ane  0   1   31  0
Jol  4   14  2   0
Ruf  3   3   11  6 
Rei  1   7    0  0
我想将其更改为列表(如边缘列表):

我发现的其他线程似乎只有列名/数据帧不包含邻接矩阵

我试着把它做成一个图,然后得到.edgelist,也试过[order(df[,1],df[1,]),drop=FALSE],但这些都没有给出我想要的。
有人能教我吗?

base R
中,复制行名和列名,
粘贴它,并基于它和矩阵值创建一个
data.frame

data.frame(name = paste(rownames(m1)[col(m1)], colnames(m1)[row(m1)], sep="-"),
          val = c(t(m1)), stringsAsFactors = FALSE)
#     name val
#1  Ane-C1   0
#2  Ane-C2   1
#3  Ane-C3  31
#4  Ane-C4   0
#5  Jol-C1   4
#6  Jol-C2  14
#7  Jol-C3   2
#8  Jol-C4   0
#9  Ruf-C1   3
#10 Ruf-C2   3
#11 Ruf-C3  11
#12 Ruf-C4   6
#13 Rei-C1   1
#14 Rei-C2   7
#15 Rei-C3   0
#16 Rei-C4   0

这是一个整洁的解决方案。使用
聚集
将宽格式转换为长格式。然后,
将两列合并成一列

library('tidyverse')

df <- data.frame(
  C1 = c(0, 4, 3, 1),
  C2 = c(1, 14, 3, 7),
  C3 = c(31, 2, 11, 0),
  C4 = c(0, 0, 4, 0),
  row.names = c('Ane', 'Jol', 'Ruf', 'Rei')
)

df %>%
  rownames_to_column %>%
  gather(key = 'key', value = 'value', -rowname) %>%
  unite('name', rowname, key, sep = '-')
#>      name value
#> 1  Ane-C1     0
#> 2  Jol-C1     4
#> 3  Ruf-C1     3
#> 4  Rei-C1     1
#> 5  Ane-C2     1
#> 6  Jol-C2    14
#> 7  Ruf-C2     3
#> 8  Rei-C2     7
#> 9  Ane-C3    31
#> 10 Jol-C3     2
#> 11 Ruf-C3    11
#> 12 Rei-C3     0
#> 13 Ane-C4     0
#> 14 Jol-C4     0
#> 15 Ruf-C4     4
#> 16 Rei-C4     0
library('tidyverse'))
df%
行名称\u到\u列%>%
聚集(键='key',值='value',-rowname)%>%
unite('name',rowname,key,sep='-'))
#>名称值
#>1 Ane-C1 0
#>2 Jol-C1 4
#>3联阵-C1 3
#>4 Rei-C1 1
#>5-C2 1
#>6 Jol-C2 14
#>7联阵C2 3
#>8 Rei-C2 7
#>9-C3 31
#>10 Jol-C3 2
#>11联阵-C3 11
#>12 Rei-C3 0
#>13烷-C4 0
#>14 Jol-C4 0
#>15联阵C4 4
#>16 Rei-C4 0
重塑2::熔化(你的矩阵)
library('tidyverse')

df <- data.frame(
  C1 = c(0, 4, 3, 1),
  C2 = c(1, 14, 3, 7),
  C3 = c(31, 2, 11, 0),
  C4 = c(0, 0, 4, 0),
  row.names = c('Ane', 'Jol', 'Ruf', 'Rei')
)

df %>%
  rownames_to_column %>%
  gather(key = 'key', value = 'value', -rowname) %>%
  unite('name', rowname, key, sep = '-')
#>      name value
#> 1  Ane-C1     0
#> 2  Jol-C1     4
#> 3  Ruf-C1     3
#> 4  Rei-C1     1
#> 5  Ane-C2     1
#> 6  Jol-C2    14
#> 7  Ruf-C2     3
#> 8  Rei-C2     7
#> 9  Ane-C3    31
#> 10 Jol-C3     2
#> 11 Ruf-C3    11
#> 12 Rei-C3     0
#> 13 Ane-C4     0
#> 14 Jol-C4     0
#> 15 Ruf-C4     4
#> 16 Rei-C4     0