我有一个对称距离矩阵(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'_
我需要将邻接矩阵设为数字才能沿着我的管道移动。有什么建议?当然,也欢迎实现我的目标的替代方法。
提前致谢。
答案 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