删除r中矩阵中的逗号

时间:2014-02-04 05:34:14

标签: r gsub

这个问题对我来说比听起来更难。我导入了一个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"))

2 个答案:

答案 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=',')

然后放下最后一栏。