Удалить запятую в матрице в r

Эта проблема для меня сложнее, чем может показаться. Я импортировал файл 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"))

person user2884824    schedule 04.02.2014    source источник
comment
Пожалуйста, приведите воспроизводимый пример.   -  person Sven Hohenstein    schedule 04.02.2014


Ответы (2)


[1,] — это строка с несколькими значениями (по одному для каждого столбца), а не одна строка. gsub возвращает ошибку, потому что он предназначен только для использования с одной строкой. Вам нужно перебрать каждое значение в матрице n x k (или использовать для этого функцию применения) и применить функцию gsub к каждому отдельному значению. Также не уверен, почему вы заменяете "[^[:digit:]]". Имейте в виду, что это заменит литеральную строку "[^[:digit:]]" , а не то, на что ссылается this в R. Вот пример в цикле:

for (i in 1:nrow(data)){
    for (j in 1:ncol(data)){
        data[i,j] <- gsub(".", "", data[i,j])
    }
}
person Michael    schedule 04.02.2014

Может быть, вы могли бы сделать что-то творческое, как это:

read.table(text='1 2 3 4 ,
5 6 7 8 ,
9 1 2 3 ,', sep=' ', na.strings=',')

А затем отбросить последний столбец.

person jbaums    schedule 04.02.2014
comment
Я должен отметить, что я не знаю, что такое файл GML, поэтому не уверен, что вы можете импортировать его с помощью read.table... - person jbaums; 04.02.2014