这个问题对我来说比听起来更难。我导入了一个GML文件。我现在所有的行都带有数字后跟,
。我无法弄清楚如何删除和制作数字。我试过as.numeric和gsub,但是当我做邻接矩阵时,我得到了这个输出:
[1,] . 1 . . 1 . . . . 1 . . . . . . 1 . . . . . . 1 . . . . . . . . . 1 . 1 . . . ......
[2,] 1 . . . . . . . . . . . . . . . . . . . . . . . . 1 . 1 . . . . . 1 . . . 1 . ......
我需要[1,]中的数字是一个实数,所以我可以尝试一个循环,我稍后会回来寻求帮助!
此代码不起作用:
games[0] <- as.numeric(gsub("[^[:digit:]]","",games[0]))
我收到此错误:
Error in `[<-.igraph`(`*tmp*`, 0, value = numeric(0)) :
Logical or numeric value must be of length 1
这是我的代码:
library(igraph)
games <- read.graph("football.gml", format="gml")
我最终需要能够查看这个算法:
get.shortest.paths(games, 1, 155, weights = NULL ,output=c("vpath", "epath", "both"))
答案 0 :(得分:0)
[1,]是一个具有多个值的行(每列一个),而不是单个字符串。 gsub返回错误,因为它仅设计用于单个字符串。您需要遍历n x k矩阵中的每个值(或使用apply函数执行此操作)并将gsub函数应用于每个单独的值。也不确定为什么要替换"[^[:digit:]]"
。请记住,这将替换文字字符串"[^[:digit:]]"
,而不是R中引用的任何内容。以下是循环中的示例:
for (i in 1:nrow(data)){
for (j in 1:ncol(data)){
data[i,j] <- gsub(".", "", data[i,j])
}
}
答案 1 :(得分:0)
也许你可以做这样的创意:
read.table(text='1 2 3 4 ,
5 6 7 8 ,
9 1 2 3 ,', sep=' ', na.strings=',')
然后放下最后一栏。