Я новичок в R и столкнулся с проблемой. Я пытаюсь заполнить матрицу («m») на основе данных в другом кадре данных («razdeljena1») - все имена столбцов и строк или «m» соответствуют именам, найденным в первом и втором столбцах в «razdeljena1» ".
m <- matrix(1:729, byrow = TRUE, nrow = 27,
dimnames = list(c("PES", "MAčKA", "VTÁK","HORA","STROM","RIEKA","SLNKO","MÄSO","SYR","VODA","CHLIEB","KLADIVO","METLA","PERO","NÔŽ","POSTEĽ","STÔL","SKRIŇA","LAMPA","TOPÁNKA","NOHAVICE","KLOBÚK","DÁŽDNIK","VEDRO","FĽAŠA","VRECE","KONZERVA"),
c("PES", "MAčKA", "VTÁK","HORA","STROM","RIEKA","SLNKO","MÄSO","SYR","VODA","CHLIEB","KLADIVO","METLA","PERO","NÔŽ","POSTEĽ","STÔL","SKRIŇA","LAMPA","TOPÁNKA","NOHAVICE","KLOBÚK","DÁŽDNIK","VEDRO","FĽAŠA","VRECE","KONZERVA")))
m <- replace(m, 1:729, NA)
Вот первые 12 наблюдений в razdeljena1
1 2 rating.response
[1,] "SYR" "KLADIVO" "1"
[2,] "LAMPA" "DÁŽDNIK" "1"
[3,] "CHLIEB" "KLOBÚK" "1"
[4,] "STROM" "KONZERVA" "1"
[5,] "PERO" "NÔŽ" "1"
[6,] "STÔL" "DÁŽDNIK" "1"
[7,] "STROM" "VODA" "1"
[8,] "DÁŽDNIK" "KONZERVA" "1"
[9,] "PERO" "POSTEĽ" "1"
[10,] "HORA" "VODA" "1"
[11,] "LAMPA" "FĽAŠA" "1"
[12,] "STROM" "SKRIŇA" "1"
. Для этого я создал время l oop, которое будет читать каждую строку и извлекать необходимую информацию и запишите его в матрицу.
a <- 1
while (a <379){
beseda1 <- razdeljena1[a,1]
beseda2 <- razdeljena1[a,2]
relat <- razdeljena1[a,3]
m[beseda1, beseda2] <- relat
m[beseda2, beseda1] <- relat
a <- a+1
}
l oop хорошо работает для первых 9 итераций (и правильно записывает в матрицу), а затем возвращает ошибку Error in [<-(*tmp*, beseda1, beseda2, value = relat) : subscript out of bounds.
Я посмотрел на ошибку и ответ на него говорит, что я пытаюсь получить доступ к столбцу или строке, которая не существует - однако: когда я пытаюсь получить доступ к ячейке за пределами l oop (с идентично определенными координатами), он фактически возвращает правильная ячейка.
пример: ошибка возникает, когда beseda1 = "PERO"
и beseda2 = "POSTEĽ"
; однако, когда я пытаюсь изменить его за пределами l oop, он работает просто отлично:
beseda1 <- "PERO"
beseda2 <- "POSTEĽ"
m[beseda1, beseda2] <- 1
m[beseda2, beseda1] <- 1
Я также попытался выяснить, не является ли это единственной парой, которая может вызвать проблемы (запустив некоторое время l oop с числом больше 9) и получил ту же ошибку после нескольких итераций.