【问题标题】:structural holes and adjacency matrix结构孔和邻接矩阵
【发布时间】:2015-05-12 05:45:27
【问题描述】:

我正在解决一个问题,以找到与 R 中的结构孔相关的措施。问题是当我应用下面的代码将邻接矩阵保存到名为“x”的变量(从该来源复制)@987654321 @ 它给了我一个错误,例如:

“as.data.frame.default(d) 中的错误: 不能将“igraph”类强制转换为 data.frame”

我的代码和数据集是这样的 一个数据框

s1
   uid1 uid2    
1     1    2    
2     1    3    
3     1    4    
4     1    5    
5     2    3   
6     2    4    
7     2    5    
8     3    4    
9     3    5    
10    4    5   
11    6    7    
12    6    8    
13    6    9    
14    7    8    
15    7    9    
16    8    9    
17    1    6   
18    1    7   
19    6    7

当我应用此代码时,错误就在这里结束了

x <- get.adjacency(graph.data.frame(graph.edgelist(as.matrix(s1), directed=F)))

as.data.frame.default(d) 中的错误: 无法将“igraph”类强制转换为 data.frame

所以任何帮助使用这个代码的结构孔测量像

y <- index.egonet(x) #desired output is this code

【问题讨论】:

  • 你正在从一个 data.frame 到一个矩阵到一个边列表到一个图。只需转到 data.frame --> 图表。 x &lt;- get.adjacency(graph.data.frame(s1, directed=F))
  • 是的,它可以工作,但是当我应用此代码时,它现在给我这个错误 index.egonet(x) intI(i, n = d[1], dn[[1]] 中的错误,给.dn = FALSE) : 无效字符索引

标签: r


【解决方案1】:

你要去

data.frame (s1)               -->  
   matrix                     --> 
     graph via graph.edgelist --> 
       trying to create a graph again via graph.data.frame

这就是您收到错误的原因,因为您已经有一个图表,并且graph.data.frame() 期望data.frame 作为输入,而不是igraph 对象。这就是错误消息的含义:

as.data.frame.default(d) 中的错误:无法将“igraph”类强制转换为 data.frame

即-“不要给我一个'igraph'对象,我想要一个data.frame”

所有这一切的最终结论是 - 只需从您的源 data.frame 转到 igraph 对象,然后提取邻接矩阵:

get.adjacency(graph.data.frame(s1, directed=F))

【讨论】:

  • 您的上述建议有效,但是当我将 index.egonet 应用于邻接矩阵 (X) 时,它给了我一个 error.like index.egonet(x) intI(i, n = d[ 1], dn[[1]], give.dn = FALSE) : 无效的字符索引
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2020-02-12
  • 2012-11-12
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多