Ошибка индекса за пределами границ при создании матрицы - PullRequest
0 голосов
/ 17 апреля 2020

Вот код для матрицы, которую я пытаюсь построить:

Data3 = read.csv(filename, stringsAsFactors = FALSE)
Data3
v <- LETTERS[1:10]
A <- matrix(0, nrow = nrow(Data3),ncol = 5)
A
A[cbind(1:nrow(Data3),match(Data3$AwayTeam,v))] <- 1
A[cbind(1:nrow(Data3),match(Data3$HomeTeam,v))] <- -1
A

По сути, это будет матрица 20x10, где каждая "команда гостей" будет обозначаться "1" и у каждой домашней команды будет «-1».

Этот бит кода работал нормально каждый раз, когда я его использовал, но по какой-то причине теперь я сталкиваюсь с ошибкой «индекс ниже границ». Есть идеи как это исправить?

1 Ответ

1 голос
/ 17 апреля 2020

v имеет длину 10, поэтому match(data$AwayTeam, v) может дать индекс> 5, если выездная команда> E, но матрица A имеет только 5 столбцов, поэтому попытка установить эти значения выходит за пределы размера массива. Я предполагаю, что либо у предыдущего csv были только команды A..E, либо ncol = 5 изменился по сравнению с предыдущим ncol = 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...