Цикл for работает отлично, но как только я создаю из него функцию, он неожиданно не дает правильных результатов в R - PullRequest
0 голосов
/ 17 июня 2019

У меня есть следующий цикл for, который делает именно то, что я хочу:

for (t in 3:20){
    XX <- c(rep(0,22))

    for (k in (1:(t-2))){

        XX[k] <- (theta^(k-1) * (P[t-k] - P[t-k-1]))
                }
        X[t] = (1-theta)  * sum(XX) + theta^(t-1)
        P[t] <- D[t] + (0.7/0.3) * X[t] - 0.1*3^2*1*(20-t-1 + (1/0.3))  
            } 

Однако, как только я создаю функцию и использую ее, результаты внезапно оказываются неверными:

BGJS <- function(theta){

for (t in 3:20){
    XX <- c(rep(0,22))

    for (k in (1:(t-2))){

        XX[k] <- (theta^(k-1) * (P[t-k] - P[t-k-1]))
                }
        X[t] = (1-theta)  * sum(XX) + theta^(t-1)
        P[t] <- D[t] + (0.7/0.3) * X[t] - 0.1*3^2*1*(20-t-1 + (1/0.3))  
            } 
    }

Может кто-нибудь найти ошибку?

1 Ответ

2 голосов
/ 17 июня 2019

Измените <- и = на <<-, поскольку ваши функции различаются по функциям.

?"<<-"

Операторы <- и = назначают всреда, в которой они оцениваются....

Операторы <<- и ->> обычно используются только в функциях и вызывают поиск в родительской среде для существующего определения присваиваемой переменной....

...