2017-03-07 36 views
-1

我有一個失敗,因爲花括號的工作守則ifelse聲明發出花括號問題 - 的R - 內for循環

o1 = read.table('/Users/manshi/Desktop/PSYC57H3/PSYC57_Homework3/Object1.csv', header=TRUE, sep=",") 
PredictedValue = vector(mode = 'numeric', length = 100) 
PredictionError = vector(mode = 'numeric', length = 100) 
PredictedValue[1] = 0 
AlAccepts = vector(mode = 'logical', length = 100) 
for (trial in 1:100){ 
    ifelse (AlAccepts[trial] == FALSE, 0, 1) { 
    PredictionError[trial] = o1$Reward[trial] - PredictedValue[trial] 
    PredictedValue[trial + 1] = PredictedValue[trial] + .3*PredictionError[trial] 
    } ifelse (AlAccepts[trial] == TRUE, 0, 1) { 
PredictedValue[trial + 1] = PredictedValue[trial] 
    } 
} 

,我得到的錯誤信息是:

> for (trial in 1:100){ 
+ ifelse (AlAccepts[trial] == FALSE, 0, 1) { 
Error: unexpected '{' in: 
"for (trial in 1:100){ 
    ifelse (AlAccepts[trial] == FALSE, 0, 1) {" 
>  PredictionError[trial] = o1$Reward[trial] - PredictedValue[trial] 
>  PredictedValue[trial + 1] = PredictedValue[trial] + .3*PredictionError[trial] 
> } ifelse (AlAccepts[trial] == TRUE, 0, 1) { 
Error: unexpected '}' in " }" 
>  PredictedValue[trial + 1] = PredictedValue[trial] 
> } 
Error: unexpected '}' in " }" 
> } 
Error: unexpected '}' in "}" 
> 

我在做什麼錯?

+4

在r中,同時存在ifelse()函數和if(){} else {}構造。我認爲你在尋找後者。 –

+0

你應該改變'ifelse'爲'其他if' – tbradley

回答

0
ifelse (AlAccepts[trial] == FALSE, 0, 1)

在一個返回值的函數,並且結果,在這種情況下爲0或1。此外空調excecution不這樣做以下括號示出了語法錯誤。使用else if(){}應該按照您的意圖工作:

for (trial in 1:100){ 
    if (AlAccepts[trial] == FALSE) { 
    PredictionError[trial] = o1$Reward[trial] - PredictedValue[trial] 
    PredictedValue[trial + 1] = PredictedValue[trial] + .3*PredictionError[trial] 
    } else if(AlAccepts[trial] == TRUE) { 
PredictedValue[trial + 1] = PredictedValue[trial] 
    } 
}