Краткий ответ - сначала объявить переменную. Поместите это перед всем, что вы разместили здесь. Я собираюсь назвать это темп. Он будет содержать все значения.
temp <- numeric(1000)
Тогда вместо строки печати используйте
temp[t] <- p_0yx %*% log2(logvect)
Кстати, ваш код делает странные вещи. Посмотрите на первый индекс p_0y. Фактически это индекс для элемента 0,
в этой матрице. Индекс R начинается с 1. Когда вы создаете количество строк в этой матрице, вы используете max(y) - min(y)
. Если максимальное значение равно 10, а минимальное значение равно 1, тогда есть только 9 строк. Бьюсь об заклад, вы действительно хотели добавить один. Кроме того, ваш код очень не похож на R со всеми ненужными циклами while. Например, весь ваш последний цикл (и инициализация logvect) можно заменить на:
logvect = (p_0yx)/(p_yx)
Но вернемся к ошибкам ... и еще немного Ресс ... мог бы следующий код ...
p_0y <- matrix(nrow = max(y) - min(y), ncol = 1)
i = min(y)
while (i <= max(y)) {
p_0y[i - min(y), ] = (length(which(y1 == i))/50)
i <- i + 1
}
может быть правильнее заменить на?
p_0y <- numeric(max(y) - min(y) + 1)
p_0y[sort(unique(y1)) - min(y1) + 1] = table(y1)/50
p_0y <- matrix(p_0y, ncol = 1)
(подобное переосмысление остальной части вашего кода может также устранить и остальные циклы)