从R中的矩阵强制数字然后绘制图形

时间:2014-10-09 14:47:55

标签: r matrix numeric coerce

我有一个对称距离矩阵(x):

0   2.6096  2.3601  5.6109   
2.6096  0   1.7045  6.8441   
2.3601  1.7045  0   6.5946   
5.6109  6.8441  6.5946  0   

我想将其作为图表进行分析,以便计算其谱密度。为了做到这一点,我想按照这些步骤(使用igraph):

x_mat <- as.matrix(x,matrix.type="adjacency") #get adjacency matrix`   
x_graph <- graph.adjacency(x_mat) #convert to graph   
x_lap <- graph.laplacian(x_graph) #convert to laplacian graph   
x_eig <- eigen(x_lap,symmetric=TRUE,only.values=TRUE)   
(I'm not sure how to plot the spectral density, but I'm not even there yet)

但我从一开始就遇到了麻烦。我可以将矩阵作为矩阵

x_mat <- as.matrix(x,matrix.type="adjacency")  
is.matrix(x_mat)
[1] TRUE   
x_mat      
[,1]                   
[1,] Numeric,39204

但我不能强迫它成为数字

mode(x_mat) <- "numeric"   
_Error in eval(expr, envir, enclos) :    
  (list) object cannot be coerced to type 'double'_

我需要将邻接矩阵设为数字才能沿着我的管道移动。有什么建议?当然,也欢迎实现我的目标的替代方法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

data.matrix应该提供您所需要的。

df <- read.table(header=F, text='
                     0   2.6096  2.3601  5.6109   
2.6096  0   1.7045  6.8441   
2.3601  1.7045  0   6.5946   
5.6109  6.8441  6.5946  0  
                 ')


mat <- data.matrix(df)
is.matrix(mat)
> is.matrix(mat)
[1] TRUE
is.numeric(mat)
> is.numeric(mat)
[1] TRUE