Обратите внимание, что ваш исходный код создает матрицу из NA
значений, например,
timesteps = 3
pop = 5
mydata <- matrix(nrow=timesteps, ncol=pop)
mydata
[,1] [,2] [,3] [,4] [,5]
[1,] NA NA NA NA NA
[2,] NA NA NA NA NA
[3,] NA NA NA NA NA
Следующие две строки кода создают значения для первой строки вашей матрицы:
mydata[1,1] <- "Has"
for (col1 in 2:pop){mydata[1,col1] <- "S"}
mydata
[,1] [,2] [,3] [,4] [,5]
[1,] "Has" "S" "S" "S" "S"
[2,] NA NA NA NA NA
[3,] NA NA NA NA NA
Ваша ошибка появляется в цикле for, когда row1 > 2
.Здесь вы индексируете значение NA
в своей матрице и спрашиваете, если NA == "Has"
, что дает NA
- пропущенное значение, а не TRUE|FALSE
, например,
row1=3
col2=1
mydata[row1-1,col2]
[1] NA
mydata[row1-1,col2] == "Has"
[1] NA
Я считаю, что ваша матрицане правильно построен.