Sorry for posting similar questions again and again. However I would like to step forward, although my skills and knowledge in R are quite limited.

There are three parameters: **a, b,** and **p**. Their initial values are:

```
a <- 0
b <- 0
p <- function(a, b){
p <- (1/(1+exp(-(a - b))))
return(p)
}
```

```
> p(a, b)
[1] 0.5
```

Also, I have a data frame.

```
myframe <- data.frame(itm.1=c(1, 1, 1),
itm.2=c(0, 1, 1),
itm.3=c(0, 0, 0))
```

```
> myframe
itm.1 itm.2 itm.3
1 1 0 0
2 1 1 0
3 1 1 0
```

The conditions are;

- If the response is
**1 (correct)**, the parameters**a**and**b**are updated to**a^**and**b^**following the formula.

a^ = a + 0.4*(1-p)

b^ = b - 0.4*(1-p)

- If the response is
**0 (wrong)**, the parameters**a**and**b**are updated to**a^**and**b^**following the formula.

a^ = a + 0.4*(0-p)

b^ = b - 0.4*(0-p)

- The parameter
**p**is also updated with updated**a^**and**b^**and recursively assigned to the formulas above to calculate**a^**and**b^**.

To achieve this, I wrote a set of codes, but the parameters are simply updated and summed by each element, not using the previous data: **a^**, **b^**, and **p^**

These are codes I wrote:

```
a <- 0
b <- 0
p <- function(a, b){
p <- (1/(1+exp(-(a - b))))
return(p)
}
myframe <- data.frame(itm.1=c(1, 1, 1),
itm.2=c(0, 1, 1),
itm.3=c(0, 0, 0))
condition_a <- function(res){ifelse(res == 1, 0.4*(1-p(a, b)), 0.4*(0-p(a, b)))}
condition_b <- function(res){ifelse(res == 1, 0.4*(1-p(a, b)), 0.4*(1-p(a, b)))}
myframe.a <- mutate_all(myframe, ~condition_a(.))
myframe.a <- mutate_all(myframe.a, cumsum)
names(myframe.a) <- paste0("a_", names(myframe.a))
myframe.b <- mutate_all(myframe, ~condition_b(.))
myframe.b <- mutate_all(myframe.b, cumsum)
names(myframe.b) <- paste0("b_", names(myframe.b))
bind_cols(myframe, myframe.a, myframe.b)
```

To express what I would like to achieve, I also attached a jpg file of the excel with functions. I hope the file help you understand my concerns. Please save the file to enlarge.

I appreciate your help and advice. Thank you in advance.