Создать функцию из интервала - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть эта матрица в R, называемая MRASTI genereatet из команды

MRASTI <- matrix(sample(data.matrix(pune, rownames.force=NA), 
                        22000, replace=TRUE),
                 nrow=1000, byrow=TRUE)

и у меня есть этот интервал

x[(x>14274.19)&(x<14458.17)]

, который является вектором с 9998 элементами. Я хочу рассчитать эту формулу:

y <- 1 / length(MRASTI) * sum((MRASTI - x)^2)

где x принимает значения из предыдущего интервала. Как я могу сделать это в R? Спасибо

Я пробую следующие команды:

> for (i in 1:9998) {y<-1/length(MRASTI)*sum((MRASTI-x[i])^2)}

но это генерирует только одно значение Спасибо

1 Ответ

1 голос
/ 01 апреля 2011

Проблема с y в этой строке:

for (i in 1:9998) {
    y <- 1/length(MRASTI)*sum((MRASTI-x[i])^2)
}

На каждой итерации цикла вы перезаписываете y. Простое решение:

y <- numeric(length = 9998)
for (i in seq_along(y)) {
    y[i] <- 1 / length(MRASTI) * sum((MRASTI - x[i])^2)
}

Не видя некоторых примеров объектов и кода для их создания и запуска вашего кода, трудно сказать, могли бы мы векторизовать это для вас, чтобы вам не понадобился цикл.

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