[R/actorCritic.R:2:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L2) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:3:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L3) *style:* **Lines should not be more than 80 characters.**
```r
#' Policy-based reinforcement learning control algorithm using both policy (the actor)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:3:87:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L3) *style:* **Trailing whitespace is superfluous.**
```r
#' Policy-based reinforcement learning control algorithm using both policy (the actor)
                                                                                ^
```
[R/actorCritic.R:5:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L5) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:6:71:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L6) *style:* **Trailing whitespace is superfluous.**
```r
#' When using a gaussian policy mean and variance will be parametrized
                                                                      ^
```
[R/actorCritic.R:8:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L8) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:9:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L9) *style:* **Lines should not be more than 80 characters.**
```r
#' Eligibility traces are used for both policy parameters and value function parameters.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:9:89:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L9) *style:* **Trailing whitespace is superfluous.**
```r
#' Eligibility traces are used for both policy parameters and value function parameters.
                                                                                ^
```
[R/actorCritic.R:10:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L10) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:13:71:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L13) *style:* **Trailing whitespace is superfluous.**
```r
#'   Type of function approximator used for policy and value function.
                                                                      ^
```
[R/actorCritic.R:14:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L14) *style:* **Lines should not be more than 80 characters.**
```r
#'   Currently supported are linear combination of features (\code{"linear"}) and
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:14:82:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L14) *style:* **Trailing whitespace is superfluous.**
```r
#'   Currently supported are linear combination of features (\code{"linear"}) and
                                                                                ^
```
[R/actorCritic.R:18:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L18) *style:* **Lines should not be more than 80 characters.**
```r
#'   \code{"gaussian"} for a continuous action space using a normal distribution.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:25:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L25) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:27:64:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L27) *style:* **Trailing whitespace is superfluous.**
```r
#' Returns a list with policy and value function parameters and
                                                               ^
```
[R/actorCritic.R:28:64:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L28) *style:* **Trailing whitespace is superfluous.**
```r
#' some statistics about learning behaviour, e.g. the number of
                                                               ^
```
[R/actorCritic.R:30:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L30) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:32:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L32) *style:* **Lines should not be more than 80 characters.**
```r
#' @references Sutton and Barto (Book draft 2017): Reinforcement Learning: An Introduction. Chapter 13
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:35:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L35) *style:* **Trailing whitespace is superfluous.**
```r
#' @examples
            ^
```
[R/actorCritic.R:48:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L48) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:50:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L50) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:54:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L54) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:59:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L59) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:66:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L66) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:73:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L73) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:75:47:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L75) *style:* **Trailing whitespace is superfluous.**
```r
#' res = actorCritic(m, fun.approx = "linear",
                                              ^
```
[R/actorCritic.R:77:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L77) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:81:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L81) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:84:68:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L84) *style:* **Trailing whitespace is superfluous.**
```r
#' res = actorCritic(m, fun.approx = "linear", policy = "gaussian",
                                                                   ^
```
[R/actorCritic.R:86:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L86) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/actorCritic.R:87:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L87) *style:* **Variable or function name should be snake_case.**
```r
actorCritic = function(envir, fun.approx = "table", policy = "softmax",
^~~~~~~~~~~
```
[R/actorCritic.R:87:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L87) *style:* **Use <-, not =, for assignment.**
```r
actorCritic = function(envir, fun.approx = "table", policy = "softmax",
            ^
```
[R/actorCritic.R:87:31:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L87) *style:* **Variable or function name should be snake_case.**
```r
actorCritic = function(envir, fun.approx = "table", policy = "softmax",
                              ^~~~~~~~~~
```
[R/actorCritic.R:87:72:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L87) *style:* **Trailing whitespace is superfluous.**
```r
actorCritic = function(envir, fun.approx = "table", policy = "softmax",
                                                                       ^
```
[R/actorCritic.R:88:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L88) *style:* **Variable or function name should be snake_case.**
```r
  critic.type = "advantage", preprocessState = identity,
  ^~~~~~~~~~~
```
[R/actorCritic.R:88:30:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L88) *style:* **Variable or function name should be snake_case.**
```r
  critic.type = "advantage", preprocessState = identity,
                             ^~~~~~~~~~~~~~~
```
[R/actorCritic.R:89:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L89) *style:* **Variable or function name should be snake_case.**
```r
  n.episodes = 100, discount = 1, alpha = 0.01, beta = 0.1, lambda = 0) {
  ^~~~~~~~~~
```
[R/actorCritic.R:90:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L90) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/actorCritic.R:102:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L102) *style:* **Lines should not be more than 80 characters.**
```r
    warning("Function approximation needs to be linear when using gaussian policy!")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:107:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L107) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/actorCritic.R:108:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L108) *style:* **Use <-, not =, for assignment.**
```r
  steps = rep(0, n.episodes)
        ^
```
[R/actorCritic.R:109:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L109) *style:* **Use <-, not =, for assignment.**
```r
  returns = rep(0, n.episodes)
          ^
```
[R/actorCritic.R:110:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L110) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/actorCritic.R:112:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L112) *style:* **Lines should not be more than 80 characters.**
```r
    policy = matrix(1 / envir$n.actions, nrow = envir$n.states, ncol = envir$n.actions)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:112:12:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L112) *style:* **Use <-, not =, for assignment.**
```r
    policy = matrix(1 / envir$n.actions, nrow = envir$n.states, ncol = envir$n.actions)
           ^
```
[R/actorCritic.R:113:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L113) *style:* **Use <-, not =, for assignment.**
```r
    h = matrix(0, nrow = envir$n.states, ncol = envir$n.actions)
      ^
```
[R/actorCritic.R:114:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L114) *style:* **Use <-, not =, for assignment.**
```r
    v = rep(0, envir$n.states)
      ^
```
[R/actorCritic.R:115:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L115) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/actorCritic.R:118:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L118) *style:* **Variable or function name should be snake_case.**
```r
      e.actor = matrix(0, nrow = envir$n.states, ncol = envir$n.actions)
      ^~~~~~~
```
[R/actorCritic.R:118:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L118) *style:* **Use <-, not =, for assignment.**
```r
      e.actor = matrix(0, nrow = envir$n.states, ncol = envir$n.actions)
              ^
```
[R/actorCritic.R:119:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L119) *style:* **Variable or function name should be snake_case.**
```r
      e.critic = rep(0, envir$n.states)
      ^~~~~~~~
```
[R/actorCritic.R:119:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L119) *style:* **Use <-, not =, for assignment.**
```r
      e.critic = rep(0, envir$n.states)
               ^
```
[R/actorCritic.R:120:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L120) *style:* **Use <-, not =, for assignment.**
```r
      j = 1
        ^
```
[R/actorCritic.R:122:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L122) *style:* **Use <-, not =, for assignment.**
```r
        s = preprocessState(envir$state)
          ^
```
[R/actorCritic.R:123:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L123) *style:* **Use <-, not =, for assignment.**
```r
        a = sampleActionFromPolicy(policy[s + 1, ])
          ^
```
[R/actorCritic.R:123:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L123) *warning:* **no visible global function definition for ‘sampleActionFromPolicy’**
```r
        a = sampleActionFromPolicy(policy[s + 1, ])
            ^~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:125:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L125) *style:* **Use <-, not =, for assignment.**
```r
        r = envir$reward
          ^
```
[R/actorCritic.R:126:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L126) *style:* **Use <-, not =, for assignment.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                   ^
```
[R/actorCritic.R:126:43:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L126) *style:* **Put spaces around all infix operators.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                                         ~^~
```
[R/actorCritic.R:126:44:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L126) *style:* **Place a space before left parenthesis, except in a function call.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                                           ^
```
[R/actorCritic.R:127:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L127) *style:* **Variable or function name should be snake_case.**
```r
        s.n = preprocessState(envir$state)
        ^~~
```
[R/actorCritic.R:127:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L127) *style:* **Use <-, not =, for assignment.**
```r
        s.n = preprocessState(envir$state)
            ^
```
[R/actorCritic.R:128:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L128) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:129:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L129) *style:* **Use <-, not =, for assignment.**
```r
        delta = r + discount * v[s.n + 1] - v[s + 1]
              ^
```
[R/actorCritic.R:131:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L131) *style:* **Use <-, not =, for assignment.**
```r
          delta = r - v[s + 1]
                ^
```
[R/actorCritic.R:133:25:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L133) *style:* **Use <-, not =, for assignment.**
```r
        e.critic[s + 1] = e.critic[s + 1] + j
                        ^
```
[R/actorCritic.R:134:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L134) *style:* **Lines should not be more than 80 characters.**
```r
        e.actor[s + 1, ] = e.actor[s + 1, ] + j * (makeNHot(a + 1, envir$n.actions) - policy[s + 1, ])
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:134:26:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L134) *style:* **Use <-, not =, for assignment.**
```r
        e.actor[s + 1, ] = e.actor[s + 1, ] + j * (makeNHot(a + 1, envir$n.actions) - policy[s + 1, ])
                         ^
```
[R/actorCritic.R:134:52:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L134) *warning:* **no visible global function definition for ‘makeNHot’**
```r
        e.actor[s + 1, ] = e.actor[s + 1, ] + j * (makeNHot(a + 1, envir$n.actions) - policy[s + 1, ])
                                                   ^~~~~~~~
```
[R/actorCritic.R:135:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L135) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:136:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L136) *style:* **Use <-, not =, for assignment.**
```r
        v = v + beta * delta * e.critic
          ^
```
[R/actorCritic.R:137:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L137) *style:* **Use <-, not =, for assignment.**
```r
        h = h + alpha * j * delta * e.actor
          ^
```
[R/actorCritic.R:138:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L138) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:139:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L139) *style:* **Variable or function name should be snake_case.**
```r
        e.critic = discount * lambda * e.critic
        ^~~~~~~~
```
[R/actorCritic.R:139:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L139) *style:* **Use <-, not =, for assignment.**
```r
        e.critic = discount * lambda * e.critic
                 ^
```
[R/actorCritic.R:140:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L140) *style:* **Variable or function name should be snake_case.**
```r
        e.actor = discount * lambda * e.actor
        ^~~~~~~
```
[R/actorCritic.R:140:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L140) *style:* **Use <-, not =, for assignment.**
```r
        e.actor = discount * lambda * e.actor
                ^
```
[R/actorCritic.R:141:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L141) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:142:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L142) *style:* **Use <-, not =, for assignment.**
```r
        policy = softmax(h)
               ^
```
[R/actorCritic.R:142:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L142) *warning:* **no visible global function definition for ‘softmax’**
```r
        policy = softmax(h)
                 ^~~~~~~
```
[R/actorCritic.R:143:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L143) *style:* **Use <-, not =, for assignment.**
```r
        j = discount * j
          ^
```
[R/actorCritic.R:144:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L144) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:146:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L146) *style:* **Lines should not be more than 80 characters.**
```r
          message(paste("Episode", i, "finished after", envir$n.steps, "steps."))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:147:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L147) *style:* **Use <-, not =, for assignment.**
```r
          steps[i] = envir$n.steps
                   ^
```
[R/actorCritic.R:154:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L154) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/actorCritic.R:157:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L157) *style:* **Variable or function name should be snake_case.**
```r
    n.weights = length(preprocessState(envir$state))
    ^~~~~~~~~
```
[R/actorCritic.R:157:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L157) *style:* **Use <-, not =, for assignment.**
```r
    n.weights = length(preprocessState(envir$state))
              ^
```
[R/actorCritic.R:158:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L158) *style:* **Use <-, not =, for assignment.**
```r
    theta = matrix(0, nrow = n.weights, ncol = envir$n.actions)
          ^
```
[R/actorCritic.R:159:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L159) *style:* **Use <-, not =, for assignment.**
```r
    w = rep(0, n.weights)
      ^
```
[R/actorCritic.R:160:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L160) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/actorCritic.R:161:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L161) *style:* **Variable or function name should be snake_case.**
```r
    predictPolicy = function(s) {
    ^~~~~~~~~~~~~
```
[R/actorCritic.R:161:19:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L161) *style:* **Use <-, not =, for assignment.**
```r
    predictPolicy = function(s) {
                  ^
```
[R/actorCritic.R:162:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L162) *style:* **Use <-, not =, for assignment.**
```r
      h = s %*% theta
        ^
```
[R/actorCritic.R:163:14:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L163) *style:* **Use <-, not =, for assignment.**
```r
      policy = softmax(h)
             ^
```
[R/actorCritic.R:163:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L163) *warning:* **no visible global function definition for ‘softmax’**
```r
      policy = softmax(h)
               ^~~~~~~
```
[R/actorCritic.R:166:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L166) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/actorCritic.R:167:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L167) *style:* **Variable or function name should be snake_case.**
```r
    predictV = function(s) {
    ^~~~~~~~
```
[R/actorCritic.R:167:14:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L167) *style:* **Use <-, not =, for assignment.**
```r
    predictV = function(s) {
             ^
```
[R/actorCritic.R:170:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L170) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/actorCritic.R:173:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L173) *style:* **Variable or function name should be snake_case.**
```r
      e.actor = matrix(0, nrow = n.weights, ncol = envir$n.actions)
      ^~~~~~~
```
[R/actorCritic.R:173:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L173) *style:* **Use <-, not =, for assignment.**
```r
      e.actor = matrix(0, nrow = n.weights, ncol = envir$n.actions)
              ^
```
[R/actorCritic.R:174:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L174) *style:* **Variable or function name should be snake_case.**
```r
      e.critic = rep(0, n.weights)
      ^~~~~~~~
```
[R/actorCritic.R:174:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L174) *style:* **Use <-, not =, for assignment.**
```r
      e.critic = rep(0, n.weights)
               ^
```
[R/actorCritic.R:175:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L175) *style:* **Use <-, not =, for assignment.**
```r
      j = 1
        ^
```
[R/actorCritic.R:177:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L177) *style:* **Use <-, not =, for assignment.**
```r
        s = preprocessState(envir$state)
          ^
```
[R/actorCritic.R:178:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L178) *style:* **Use <-, not =, for assignment.**
```r
        policy = predictPolicy(s)
               ^
```
[R/actorCritic.R:179:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L179) *style:* **Use <-, not =, for assignment.**
```r
        action = sampleActionFromPolicy(policy)
               ^
```
[R/actorCritic.R:179:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L179) *warning:* **no visible global function definition for ‘sampleActionFromPolicy’**
```r
        action = sampleActionFromPolicy(policy)
                 ^~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:181:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L181) *style:* **Use <-, not =, for assignment.**
```r
        r = envir$reward
          ^
```
[R/actorCritic.R:182:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L182) *style:* **Use <-, not =, for assignment.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                   ^
```
[R/actorCritic.R:182:43:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L182) *style:* **Put spaces around all infix operators.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                                         ~^~
```
[R/actorCritic.R:182:44:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L182) *style:* **Place a space before left parenthesis, except in a function call.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                                           ^
```
[R/actorCritic.R:183:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L183) *style:* **Variable or function name should be snake_case.**
```r
        s.n = preprocessState(envir$state)
        ^~~
```
[R/actorCritic.R:183:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L183) *style:* **Use <-, not =, for assignment.**
```r
        s.n = preprocessState(envir$state)
            ^
```
[R/actorCritic.R:184:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L184) *style:* **Use <-, not =, for assignment.**
```r
        v = predictV(s)
          ^
```
[R/actorCritic.R:185:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L185) *style:* **Variable or function name should be snake_case.**
```r
        v.n = predictV(s.n)
        ^~~
```
[R/actorCritic.R:185:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L185) *style:* **Use <-, not =, for assignment.**
```r
        v.n = predictV(s.n)
            ^
```
[R/actorCritic.R:186:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L186) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:187:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L187) *style:* **Use <-, not =, for assignment.**
```r
        delta = r + discount * v.n - v
              ^
```
[R/actorCritic.R:189:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L189) *style:* **Use <-, not =, for assignment.**
```r
          delta = r - v
                ^
```
[R/actorCritic.R:191:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L191) *style:* **Variable or function name should be snake_case.**
```r
        e.critic = e.critic + j * s
        ^~~~~~~~
```
[R/actorCritic.R:191:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L191) *style:* **Use <-, not =, for assignment.**
```r
        e.critic = e.critic + j * s
                 ^
```
[R/actorCritic.R:192:12:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L192) *style:* **Use <-, not =, for assignment.**
```r
        s2 = matrix(0, nrow = length(s), ncol = envir$n.actions)
           ^
```
[R/actorCritic.R:193:26:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L193) *style:* **Use <-, not =, for assignment.**
```r
        s2[, action + 1] = s
                         ^
```
[R/actorCritic.R:195:24:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L195) *style:* **Use <-, not =, for assignment.**
```r
          e.actor[, k] = e.actor[, k] + j * (s2[, k] - policy[k] * s)
                       ^
```
[R/actorCritic.R:197:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L197) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:198:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L198) *style:* **Use <-, not =, for assignment.**
```r
        w = w + beta * delta * e.critic
          ^
```
[R/actorCritic.R:199:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L199) *style:* **Use <-, not =, for assignment.**
```r
        theta = theta + alpha * j * delta * e.actor
              ^
```
[R/actorCritic.R:200:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L200) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:201:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L201) *style:* **Variable or function name should be snake_case.**
```r
        e.critic = discount * lambda * e.critic
        ^~~~~~~~
```
[R/actorCritic.R:201:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L201) *style:* **Use <-, not =, for assignment.**
```r
        e.critic = discount * lambda * e.critic
                 ^
```
[R/actorCritic.R:202:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L202) *style:* **Variable or function name should be snake_case.**
```r
        e.actor = discount * lambda * e.actor
        ^~~~~~~
```
[R/actorCritic.R:202:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L202) *style:* **Use <-, not =, for assignment.**
```r
        e.actor = discount * lambda * e.actor
                ^
```
[R/actorCritic.R:203:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L203) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:204:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L204) *style:* **Use <-, not =, for assignment.**
```r
        j = discount * j
          ^
```
[R/actorCritic.R:205:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L205) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:207:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L207) *style:* **Lines should not be more than 80 characters.**
```r
          message(paste("Episode", i, "finished after", envir$n.steps, "steps."))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:208:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L208) *style:* **Use <-, not =, for assignment.**
```r
          steps[i] = envir$n.steps
                   ^
```
[R/actorCritic.R:215:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L215) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/actorCritic.R:218:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L218) *style:* **Variable or function name should be snake_case.**
```r
    n.weights = length(preprocessState(envir$state))
    ^~~~~~~~~
```
[R/actorCritic.R:218:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L218) *style:* **Use <-, not =, for assignment.**
```r
    n.weights = length(preprocessState(envir$state))
              ^
```
[R/actorCritic.R:219:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L219) *style:* **Variable or function name should be snake_case.**
```r
    theta.mu = rep(0, n.weights)
    ^~~~~~~~
```
[R/actorCritic.R:219:14:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L219) *style:* **Use <-, not =, for assignment.**
```r
    theta.mu = rep(0, n.weights)
             ^
```
[R/actorCritic.R:220:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L220) *style:* **Variable or function name should be snake_case.**
```r
    theta.sigma = rep(0, n.weights)
    ^~~~~~~~~~~
```
[R/actorCritic.R:220:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L220) *style:* **Use <-, not =, for assignment.**
```r
    theta.sigma = rep(0, n.weights)
                ^
```
[R/actorCritic.R:221:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L221) *style:* **Use <-, not =, for assignment.**
```r
    w = rep(0, n.weights)
      ^
```
[R/actorCritic.R:222:8:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L222) *style:* **Use <-, not =, for assignment.**
```r
    mu = 0
       ^
```
[R/actorCritic.R:223:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L223) *style:* **Use <-, not =, for assignment.**
```r
    sigma = 1
          ^
```
[R/actorCritic.R:224:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L224) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/actorCritic.R:225:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L225) *style:* **Variable or function name should be snake_case.**
```r
    predictV = function(s) {
    ^~~~~~~~
```
[R/actorCritic.R:225:14:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L225) *style:* **Use <-, not =, for assignment.**
```r
    predictV = function(s) {
             ^
```
[R/actorCritic.R:228:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L228) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/actorCritic.R:231:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L231) *style:* **Variable or function name should be snake_case.**
```r
      e.actor.mu = rep(0, n.weights)
      ^~~~~~~~~~
```
[R/actorCritic.R:231:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L231) *style:* **Use <-, not =, for assignment.**
```r
      e.actor.mu = rep(0, n.weights)
                 ^
```
[R/actorCritic.R:232:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L232) *style:* **Variable or function name should be snake_case.**
```r
      e.actor.sigma = rep(0, n.weights)
      ^~~~~~~~~~~~~
```
[R/actorCritic.R:232:21:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L232) *style:* **Use <-, not =, for assignment.**
```r
      e.actor.sigma = rep(0, n.weights)
                    ^
```
[R/actorCritic.R:233:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L233) *style:* **Variable or function name should be snake_case.**
```r
      e.critic = rep(0, n.weights)
      ^~~~~~~~
```
[R/actorCritic.R:233:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L233) *style:* **Use <-, not =, for assignment.**
```r
      e.critic = rep(0, n.weights)
               ^
```
[R/actorCritic.R:234:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L234) *style:* **Use <-, not =, for assignment.**
```r
      j = 1
        ^
```
[R/actorCritic.R:236:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L236) *style:* **Use <-, not =, for assignment.**
```r
        s = preprocessState(envir$state)
          ^
```
[R/actorCritic.R:237:12:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L237) *style:* **Use <-, not =, for assignment.**
```r
        mu = c(theta.mu %*% s)
           ^
```
[R/actorCritic.R:238:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L238) *style:* **Use <-, not =, for assignment.**
```r
        sigma = exp(c(theta.sigma %*% s))
              ^
```
[R/actorCritic.R:239:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L239) *style:* **Use <-, not =, for assignment.**
```r
        action = rnorm(1, mean = mu, sd = sigma)
               ^
```
[R/actorCritic.R:241:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L241) *style:* **Use <-, not =, for assignment.**
```r
        r = envir$reward
          ^
```
[R/actorCritic.R:242:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L242) *style:* **Use <-, not =, for assignment.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                   ^
```
[R/actorCritic.R:242:43:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L242) *style:* **Put spaces around all infix operators.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                                         ~^~
```
[R/actorCritic.R:242:44:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L242) *style:* **Place a space before left parenthesis, except in a function call.**
```r
        returns[i] = returns[i] + discount^(envir$n.steps - 1) * r
                                           ^
```
[R/actorCritic.R:243:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L243) *style:* **Variable or function name should be snake_case.**
```r
        s.n = preprocessState(envir$state)
        ^~~
```
[R/actorCritic.R:243:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L243) *style:* **Use <-, not =, for assignment.**
```r
        s.n = preprocessState(envir$state)
            ^
```
[R/actorCritic.R:244:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L244) *style:* **Use <-, not =, for assignment.**
```r
        v = predictV(s)
          ^
```
[R/actorCritic.R:245:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L245) *style:* **Variable or function name should be snake_case.**
```r
        v.n = predictV(s.n)
        ^~~
```
[R/actorCritic.R:245:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L245) *style:* **Use <-, not =, for assignment.**
```r
        v.n = predictV(s.n)
            ^
```
[R/actorCritic.R:246:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L246) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:247:15:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L247) *style:* **Use <-, not =, for assignment.**
```r
        delta = r + discount * v.n - v
              ^
```
[R/actorCritic.R:249:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L249) *style:* **Use <-, not =, for assignment.**
```r
          delta = r - v
                ^
```
[R/actorCritic.R:251:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L251) *style:* **Variable or function name should be snake_case.**
```r
        e.critic = e.critic + j * s
        ^~~~~~~~
```
[R/actorCritic.R:251:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L251) *style:* **Use <-, not =, for assignment.**
```r
        e.critic = e.critic + j * s
                 ^
```
[R/actorCritic.R:252:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L252) *style:* **Variable or function name should be snake_case.**
```r
        e.actor.mu = e.actor.mu + j * ((action - mu) * s / sigma^2)
        ^~~~~~~~~~
```
[R/actorCritic.R:252:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L252) *style:* **Use <-, not =, for assignment.**
```r
        e.actor.mu = e.actor.mu + j * ((action - mu) * s / sigma^2)
                   ^
```
[R/actorCritic.R:252:40:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L252) *style:* **Place a space before left parenthesis, except in a function call.**
```r
        e.actor.mu = e.actor.mu + j * ((action - mu) * s / sigma^2)
                                       ^
```
[R/actorCritic.R:252:65:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L252) *style:* **Put spaces around all infix operators.**
```r
        e.actor.mu = e.actor.mu + j * ((action - mu) * s / sigma^2)
                                                               ~^~
```
[R/actorCritic.R:253:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L253) *style:* **Lines should not be more than 80 characters.**
```r
        e.actor.sigma = e.actor.sigma + j * (- s + (action - mu)^2 / sigma^2 * s)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:253:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L253) *style:* **Variable or function name should be snake_case.**
```r
        e.actor.sigma = e.actor.sigma + j * (- s + (action - mu)^2 / sigma^2 * s)
        ^~~~~~~~~~~~~
```
[R/actorCritic.R:253:23:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L253) *style:* **Use <-, not =, for assignment.**
```r
        e.actor.sigma = e.actor.sigma + j * (- s + (action - mu)^2 / sigma^2 * s)
                      ^
```
[R/actorCritic.R:253:65:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L253) *style:* **Put spaces around all infix operators.**
```r
        e.actor.sigma = e.actor.sigma + j * (- s + (action - mu)^2 / sigma^2 * s)
                                                               ~^~
```
[R/actorCritic.R:253:75:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L253) *style:* **Put spaces around all infix operators.**
```r
        e.actor.sigma = e.actor.sigma + j * (- s + (action - mu)^2 / sigma^2 * s)
                                                                         ~^~
```
[R/actorCritic.R:254:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L254) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:255:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L255) *style:* **Use <-, not =, for assignment.**
```r
        w = w + beta * delta * e.critic
          ^
```
[R/actorCritic.R:256:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L256) *style:* **Variable or function name should be snake_case.**
```r
        theta.mu = theta.mu + alpha * j * delta * e.actor.mu
        ^~~~~~~~
```
[R/actorCritic.R:256:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L256) *style:* **Use <-, not =, for assignment.**
```r
        theta.mu = theta.mu + alpha * j * delta * e.actor.mu
                 ^
```
[R/actorCritic.R:257:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L257) *style:* **Variable or function name should be snake_case.**
```r
        theta.sigma = theta.sigma + alpha * j * delta * e.actor.sigma
        ^~~~~~~~~~~
```
[R/actorCritic.R:257:21:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L257) *style:* **Use <-, not =, for assignment.**
```r
        theta.sigma = theta.sigma + alpha * j * delta * e.actor.sigma
                    ^
```
[R/actorCritic.R:258:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L258) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:259:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L259) *style:* **Variable or function name should be snake_case.**
```r
        e.critic = discount * lambda * e.critic
        ^~~~~~~~
```
[R/actorCritic.R:259:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L259) *style:* **Use <-, not =, for assignment.**
```r
        e.critic = discount * lambda * e.critic
                 ^
```
[R/actorCritic.R:260:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L260) *style:* **Variable or function name should be snake_case.**
```r
        e.actor.mu = discount * lambda * e.actor.mu
        ^~~~~~~~~~
```
[R/actorCritic.R:260:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L260) *style:* **Use <-, not =, for assignment.**
```r
        e.actor.mu = discount * lambda * e.actor.mu
                   ^
```
[R/actorCritic.R:261:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L261) *style:* **Variable or function name should be snake_case.**
```r
        e.actor.sigma = discount * lambda * e.actor.sigma
        ^~~~~~~~~~~~~
```
[R/actorCritic.R:261:23:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L261) *style:* **Use <-, not =, for assignment.**
```r
        e.actor.sigma = discount * lambda * e.actor.sigma
                      ^
```
[R/actorCritic.R:262:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L262) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:263:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L263) *style:* **Use <-, not =, for assignment.**
```r
        j = discount * j
          ^
```
[R/actorCritic.R:264:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L264) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/actorCritic.R:266:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L266) *style:* **Lines should not be more than 80 characters.**
```r
          message(paste("Episode", i, "finished after", envir$n.steps, "steps."))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/actorCritic.R:267:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L267) *style:* **Use <-, not =, for assignment.**
```r
          steps[i] = envir$n.steps
                   ^
```
[R/actorCritic.R:272:67:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L272) *style:* **Trailing whitespace is superfluous.**
```r
    return(list(policy = list(mu = theta.mu, sigma = theta.sigma),
                                                                  ^
```
[R/actorCritic.R:277:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/actorCritic.R#L277) *style:* **Use <-, not =, for assignment.**
```r
softmax = function(x) {
        ^
```
[R/bandit.R:9:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L9) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/bandit.R:37:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L37) *style:* **Lines should not be more than 80 characters.**
```r
#'   Parameter of gradient bandit algorithm, higher alpha value gives more weight to
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/bandit.R:80:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L80) *style:* **Variable or function name should be snake_case.**
```r
solveBandit = function(rewardFun, n.actions, n.episodes = 100,
^~~~~~~~~~~
```
[R/bandit.R:80:13:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L80) *style:* **Use <-, not =, for assignment.**
```r
solveBandit = function(rewardFun, n.actions, n.episodes = 100,
            ^
```
[R/bandit.R:80:24:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L80) *style:* **Variable or function name should be snake_case.**
```r
solveBandit = function(rewardFun, n.actions, n.episodes = 100,
                       ^~~~~~~~~
```
[R/bandit.R:80:35:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L80) *style:* **Variable or function name should be snake_case.**
```r
solveBandit = function(rewardFun, n.actions, n.episodes = 100,
                                  ^~~~~~~~~
```
[R/bandit.R:80:46:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L80) *style:* **Variable or function name should be snake_case.**
```r
solveBandit = function(rewardFun, n.actions, n.episodes = 100,
                                             ^~~~~~~~~~
```
[R/bandit.R:81:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L81) *style:* **Variable or function name should be snake_case.**
```r
  action.selection = c("egreedy", "greedy", "UCB", "gradientbandit"),
  ^~~~~~~~~~~~~~~~
```
[R/bandit.R:82:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L82) *style:* **Variable or function name should be snake_case.**
```r
  epsilon = 0.1, epsilon.decay = 0.5, epsilon.decay.after = 100,
                 ^~~~~~~~~~~~~
```
[R/bandit.R:82:39:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L82) *style:* **Variable or function name should be snake_case.**
```r
  epsilon = 0.1, epsilon.decay = 0.5, epsilon.decay.after = 100,
                                      ^~~~~~~~~~~~~~~~~~~
```
[R/bandit.R:83:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L83) *style:* **Variable or function name should be snake_case.**
```r
  alpha = 0.1, initial.value = 0, initial.visits = 0, C = 2) {
               ^~~~~~~~~~~~~
```
[R/bandit.R:83:35:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L83) *style:* **Variable or function name should be snake_case.**
```r
  alpha = 0.1, initial.value = 0, initial.visits = 0, C = 2) {
                                  ^~~~~~~~~~~~~~
```
[R/bandit.R:84:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L84) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/bandit.R:88:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L88) *style:* **Lines should not be more than 80 characters.**
```r
  checkmate::assertChoice(action.selection, c("egreedy", "greedy", "UCB", "gradientbandit"))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/bandit.R:96:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L96) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/bandit.R:97:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L97) *style:* **Variable or function name should be snake_case.**
```r
  action.selection = match.arg(action.selection)
  ^~~~~~~~~~~~~~~~
```
[R/bandit.R:97:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L97) *style:* **Use <-, not =, for assignment.**
```r
  action.selection = match.arg(action.selection)
                   ^
```
[R/bandit.R:98:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L98) *style:* **Variable or function name should be snake_case.**
```r
  action.visits = rep(initial.visits, n.actions)
  ^~~~~~~~~~~~~
```
[R/bandit.R:98:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L98) *style:* **Use <-, not =, for assignment.**
```r
  action.visits = rep(initial.visits, n.actions)
                ^
```
[R/bandit.R:99:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L99) *style:* **Use <-, not =, for assignment.**
```r
  rewards = rep(initial.value * initial.visits, n.actions)
          ^
```
[R/bandit.R:100:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L100) *style:* **Variable or function name should be snake_case.**
```r
  Q = rep(initial.value, n.actions)
  ^
```
[R/bandit.R:100:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L100) *style:* **Use <-, not =, for assignment.**
```r
  Q = rep(initial.value, n.actions)
    ^
```
[R/bandit.R:101:3:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L101) *style:* **Variable or function name should be snake_case.**
```r
  H = rep(0, n.actions)
  ^
```
[R/bandit.R:101:5:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L101) *style:* **Use <-, not =, for assignment.**
```r
  H = rep(0, n.actions)
    ^
```
[R/bandit.R:102:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L102) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/bandit.R:105:14:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L105) *style:* **Use <-, not =, for assignment.**
```r
      action = sample(which(action.visits == 0), 1)
             ^
```
[R/bandit.R:108:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L108) *style:* **Use <-, not =, for assignment.**
```r
        action = which.max(Q)
               ^
```
[R/bandit.R:111:19:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L111) *style:* **Use <-, not =, for assignment.**
```r
          epsilon = epsilon * epsilon.decay
                  ^
```
[R/bandit.R:113:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L113) *style:* **Use <-, not =, for assignment.**
```r
        action = selectActionEgreedy(Q, n.actions, epsilon)
               ^
```
[R/bandit.R:113:18:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L113) *warning:* **no visible global function definition for ‘selectActionEgreedy’**
```r
        action = selectActionEgreedy(Q, n.actions, epsilon)
                 ^~~~~~~~~~~~~~~~~~~
```
[R/bandit.R:115:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L115) *style:* **Use <-, not =, for assignment.**
```r
        action = which.max(Q + sqrt(C * log(i) / action.visits))
               ^
```
[R/bandit.R:117:9:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L117) *style:* **Variable or function name should be snake_case.**
```r
        Q = exp(H) / sum(exp(H))
        ^
```
[R/bandit.R:117:11:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L117) *style:* **Use <-, not =, for assignment.**
```r
        Q = exp(H) / sum(exp(H))
          ^
```
[R/bandit.R:118:16:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L118) *style:* **Use <-, not =, for assignment.**
```r
        action = sample(seq_len(n.actions), 1, prob = Q)
               ^
```
[R/bandit.R:121:12:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L121) *style:* **Use <-, not =, for assignment.**
```r
    reward = rewardFun(action - 1)
           ^
```
[R/bandit.R:122:1:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L122) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/bandit.R:123:27:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L123) *style:* **Use <-, not =, for assignment.**
```r
    action.visits[action] = action.visits[action] + 1
                          ^
```
[R/bandit.R:124:21:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L124) *style:* **Use <-, not =, for assignment.**
```r
    rewards[action] = rewards[action] + reward
                    ^
```
[R/bandit.R:126:17:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L126) *style:* **Use <-, not =, for assignment.**
```r
      Q[action] = rewards[action] / action.visits[action]
                ^
```
[R/bandit.R:128:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L128) *style:* **Variable or function name should be snake_case.**
```r
      total.reward = sum(rewards)
      ^~~~~~~~~~~~
```
[R/bandit.R:128:20:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L128) *style:* **Use <-, not =, for assignment.**
```r
      total.reward = sum(rewards)
                   ^
```
[R/bandit.R:129:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L129) *style:* **Variable or function name should be snake_case.**
```r
      total.action.visits = sum(action.visits)
      ^~~~~~~~~~~~~~~~~~~
```
[R/bandit.R:129:27:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L129) *style:* **Use <-, not =, for assignment.**
```r
      total.action.visits = sum(action.visits)
                          ^
```
[R/bandit.R:130:7:](https://github.com/markdumke/reinforcelearn/blob/cccdec8b5d95bb63bd8d83a5dd9fe5412c76dc69/R/bandit.R#L130) *style:* **Variable or function name should be snake_case.**
```r
      average.reward = total.reward / total.action.visits


> AFAIK there's no promise that anything which is not API or SPI would work with 3rd party libraries, right @andrerom? :)

Probably, but it opens up a discussion if official extension points should also have their own test cases considered as API to assist testing the extensions in an officially supported way.

I will fix it in TagsBundle as per my example for now, but in the future, there could be other cases that will need a fix like this.


Попробуй обойтись без переменных a, b и c. Работай сразу с массивом, добваляй в него элемент, который является суммой 2-х последних элементов массива (тут полезны будут отрицательные индексы)


Нам нужно найти не 100 элементов последовательности, а все элементы не более 100. Поэтому тут нужен цикл с условием.


А адаптер разве не надо добавить через `add_dependency`?


Autogenerated from express generator


What happened here? Why didn't you write anything?


For debugging, however this is something generated from express generator, so it just "isn't deleted"


You don't need a bunch of these libraries, you should delete these.


Ja, wäre dann so. dann müsste man das Formular nochmal ausfüllen, da die Fehlermeldung erscheint. One day ist falsch, ist nur ein halber Tag.


Dear Miguel
In this particular case it's very easy to read what you are asking. There are just 3 files changed. For the documentation about the variables just scroll up this page and read  file  exx.f90 lines 61,62 and 67 to 72.


By this statement you are saying that a lollipop IS A candyshop. Is it? :) (No)


> Probably, but it opens up a discussion if official extension points should also have their own test cases considered as API to assist testing the extensions in an officially supported way.

true, if the point of placing test classes in -dev is to avoid composer generating entry for them on dump-autoload optimization, maybe we can find another way to tell composer to skip test classes.

Could you link to what got broken in TagsBundle so we can see the use case?


-Added RetroFit
-Made transition from listView to Activity


This should be a field of the `Sweet` class.


This is actually a good catch, and my mistake. It should have been set a bit higher using following syntax:
app.set('env', process.env.NODE_ENV);


deferred initcalls functioning , tested with bluetooth driver
nougat is a bit squirrely, need to figure out where i am going wrong with startup scripting

need to run
cat /proc/deferred_initcalls
or crash when activating bluetooth

E6853:/ # cat /proc/deferred_initcalls
0
dmesg -s 128000 | grep "initcall" | sed "s/(.)after(.)/\2 \1/g" | sort -n
[ 70.526401] Running do_deferred_initcalls()
5666 usecs [ 70.532324] initcall bcm43xx_bluetooth_init+0x0/0x24 returned 0
E6853:/ #


Вот эта перменная и 2 следующие нужны только в первом цикле, поэтому их не нужно здесь объявлять и инициализировать. просто вводи их в цикле и сразу присваивай нужное значение, введенное пользователем. В руби переменные не нужно инициализировать перед использованием, только в некоторых случаях, но здесь точно не надо


[R/irlba.R:130:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/irlba.R#L130) *style:* **Lines should not be more than 130 characters.**
```r
#' Baglama, James, and Lothar Reichel. "Augmented implicitly restarted Lanczos bidiagonalization methods." SIAM Journal on Scientific Computing 27.1 (2005): 19-42.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/irlba.R:228:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/irlba.R#L228) *style:* **Lines should not be more than 130 characters.**
```r
    warning("The deflation options are deprecated and have been removed as formal arugments. Please modify your code to not use them.")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/irlba.R:282:7:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/irlba.R#L282) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if(! ("work" %in% names(as.list(match.call())))) work <- min(min(m, n), work + 20)
      ^
```
[R/irlba.R:323:28:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/irlba.R#L323) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  fastpath <- fastpath && (("Matrix" %in% attributes(class(A)) && ("dgCMatrix" %in% class(A))) || "matrix" %in% class(A))
                           ^
```
[R/irlba.R:331:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/irlba.R#L331) *style:* **Lines should not be more than 130 characters.**
```r
      if (verbose) message("Initializing starting vector v with samples from standard normal distribution.\nUse `set.seed` first for reproducibility.")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/prcomp.R:94:35:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/prcomp.R#L94) *style:* **Place a space before left parenthesis, except in a function call.**
```r
        f <- function(i) sqrt(sum((x[, i] - center[i]) ^ 2) / (nrow(x) - 1L))
                                  ^
```
[R/ssvd.R:2:3:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L2) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/ssvd.R:15:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L15) *style:* **Lines should not be more than 130 characters.**
```r
#' @param tol Convergence is determined when \eqn{\|U_j - U_{j-1}\|_F < tol}{||U_j - U_{j-1}||_F < tol}, where \eqn{U_j} is the matrix of estimated left regularized singular vectors at iteration \eqn{j}.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/ssvd.R:55:102:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L55) *style:* **Trailing whitespace is superfluous.**
```r
#'    \item{d} {regularized upper-triangluar projection matrix so that \code{x \%*\% v == u \%*\% d}}
                                                                                ^
```
[R/ssvd.R:106:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L106) *style:* **Lines should not be more than 130 characters.**
```r
#'   \item{Shen, Haipeng, and Jianhua Z. Huang. "Sparse principal component analysis via regularized low rank matrix approximation." Journal of multivariate analysis 99.6 (2008): 1015-1034.}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/ssvd.R:107:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L107) *style:* **Lines should not be more than 130 characters.**
```r
#'   \item{Witten, Tibshirani and Hastie (2009) A penalized matrix decomposition, with applications to sparse principal components and canonical correlation analysis. _Biostatistics_ 10(3): 515-534.}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/ssvd.R:173:8:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L173) *style:* **Trailing whitespace is superfluous.**
```r
      {
       ^
```
[R/ssvd.R:174:35:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L174) *style:* **Place a space before left parenthesis, except in a function call.**
```r
        f <- function(i) sqrt(sum((x[, i] - center[i]) ^ 2) / (nrow(x) - 1L))
                                  ^
```
[R/ssvd.R:197:51:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L197) *style:* **Remove spaces before the left parenthesis in a function call.**
```r
    lambda <<- vapply(seq(length(p)), function(j) (1 - alpha) * z[p[j], j] + alpha * z[p[j] + 1, j], pi, USE.NAMES=FALSE)
                                                  ^
```
[R/ssvd.R:203:8:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L203) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  while(delta_u > tol && iter < maxit)
       ^
```
[R/ssvd.R:213:1:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/ssvd.R#L213) *style:* **Lines should not be more than 130 characters.**
```r
  if (iter >= maxit) warning("Maximum number of iterations reached before convergence: solution may not be optimal. Consider increasing 'maxit'.")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/svdr.R:112:17:](https://github.com/bwlewis/irlba/blob/b683ce0a53ed5a0f044d8451d2859029f3492f63/R/svdr.R#L112) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if (max(abs((d1 - d) / d)) < tol) break
                ^
```


It is, app is initialised as express, therefore, express is being used. Check line 16.


А эти переменные лучше инициализровать ближе ко второму циклу. Вообще есть правило: инициализировать переменные как можно ближе к их первому использованию (при условии, что вообще нужна инициализация)


Пустой хеш задаем как `{}`


Je prefere ma version où le ref contient le titre du truc; je ne vois pas   de difference a part ca


I believe it is 7, however I am not 100% sure.


Maybe we should not specify -mcmodel=large here at all, but override CC_MARCH for nova only


Внутри цикла код должен быть с отступом, чтобы показать вложенность кода.


Keep in mind that Node always has and always will encourage require syntax and are slowly removing the support for import statement


Ich kenne es eher so, dass bei der Formularausgabe ein Token generiert und in die Session gelegt wird.
Und nach Versand des Formulars wird dann geprüft, ob der Token in der Session liegt.


These changes do a lot more than the description in the commit log suggests. Changed entries are not limited to just IPSec and iptables. How are you generating the defconfig file updates?


This should be a field of the `Sweet` class as well.


Используй постфиксный if, если в теле всего одна строка


It seems it is enough to link core and bootstrap with the appropriated -mc flag within the run-tool. Sorry, for the inconvenience and confusion from my side.


ok


адаптер никакого отношения к rubygems не имеет, он на github хостится.
Поэтому добавляем его в gemfile, а не в gemspec


The previous constructor would be enough, you shouldn't need this default constructor.


Nuked texfat module.


This method should take a `string` as an argument according to the specification.


Используй постфиксный if,  если в теле одна строка


Тут не нужен хеш, достаточно массива


No, but it is an object, so if we want we can add it in order to modify the output to our needs. In this case we want error to carry the type of code it should throw


У тебя дублируется 11 из 12 значений. Не проще ли просто поменять нужное, если год високосный?


Вместо вложенных if используй один if и составное условие, объединенное через логические операторы


Пустой хеш принято задавать как `{}`


Пустой хеш принято задавать как `[]`. Правда, массив тут не нужен.


Внутри циклов код пишется с отступом, чтобы показать вложенность


This below is actually error middleware, the one and only. The one above is a simple middleware for altering Error object and preparing that, in case no action can be found for given call, 404 is thrown. Might I add, this is also something that Express handles out of the box like this


Still not saving for me any hint??


## Global

| Changed            |   Status |
|:-------------------|---------:|
| `metadata_passing` |      -25 |
| `metadata_total`   |      -25 |
| `nodes_count`      |    -9253 |
| `texts_passing`    |      -24 |
| `texts_total`      |      -24 |

## Words

| Changed   |   Status |
|:----------|---------:|
| `deu`     |    +1102 |
| `grc`     |  -264847 |
| `lat`     |     -200 |

## Units

| Changed                                               | Status   |
|:------------------------------------------------------|:---------|
| `./data/tlg0527/tlg024/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg024/tlg0527.tlg024.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg030/tlg0527.tlg030.opp-grc2.xml`   | New      |
| `./data/tlg0527/tlg034/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg034/tlg0527.tlg034.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg034/tlg0527.tlg034.opp-grc2.xml`   | Deleted  |
| `./data/tlg0527/tlg036/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg036/tlg0527.tlg036.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg049/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg049/tlg0527.tlg049.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg050/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg050/tlg0527.tlg050.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg051/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg051/tlg0527.tlg051.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg052/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg052/tlg0527.tlg052.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg053/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg053/tlg0527.tlg053.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg054/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg054/tlg0527.tlg054.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg055/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg055/tlg0527.tlg055.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg056/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg056/tlg0527.tlg056.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg057/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg057/tlg0527.tlg057.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg058/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg058/tlg0527.tlg058.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg059/__cts__.xml`                   | Deleted  |
| `./data/tlg0527/tlg059/tlg0527.tlg059.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0592/__cts__.xml`                          | Deleted  |
| `./data/tlg0592/tlg001/__cts__.xml`                   | Deleted  |
| `./data/tlg0592/tlg001/tlg0592.tlg001.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0592/tlg003/__cts__.xml`                   | Deleted  |
| `./data/tlg0592/tlg003/tlg0592.tlg003.1st1K-grc1.xml` | Deleted  |
| `./data/tlg1272/__cts__.xml`                          | Deleted  |
| `./data/tlg1272/tlg001/__cts__.xml`                   | Deleted  |
| `./data/tlg1272/tlg001/tlg1272.tlg001.1st1K-grc1.xml` | Deleted  |
| `./data/tlg1463/tlg001/tlg1463.tlg001.1st1K-grc1.xml` | Deleted  |
| `./data/tlg1463/tlg001/tlg1463.tlg001.1st1K-lat1.xml` | Deleted  |
| `./data/tlg2034/tlg002/__cts__.xml`                   | Deleted  |
| `./data/tlg2034/tlg002/tlg2034.tlg002.1st1K-grc1.xml` | Deleted  |
| `./data/tlg2034/tlg003/__cts__.xml`                   | Deleted  |
| `./data/tlg2034/tlg003/tlg2034.tlg003.1st1K-grc1.xml` | Deleted  |
| `./data/tlg2034/tlg005/__cts__.xml`                   | Deleted  |
| `./data/tlg2034/tlg005/tlg2034.tlg005.1st1K-grc1.xml` | Deleted  |
| `./data/tlg2034/tlg027/__cts__.xml`                   | Deleted  |
| `./data/tlg2034/tlg027/tlg2034.tlg027.1st1K-grc1.xml` | Deleted  |
| `./data/tlg2806/__cts__.xml`                          | Deleted  |
| `./data/tlg2806/tlg001/__cts__.xml`                   | Deleted  |
| `./data/tlg2806/tlg001/tlg2806.tlg001.1st1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg030/tlg0527.tlg030.opp-grc2.xml`   | Passing  |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/3119)*


TeamCity OTA+ :: rvi_sota_server :: ci [Build 2618](http://teamcity.prod01.internal.advancedtelematic.com:8111/viewLog.html?buildId=45662&buildTypeId=ota_plus_RviSotaServer_Ci) is now running


@smalinin if you want to e.g. skype @HughWilliams has my contact details. Could be easier than making issue chat like this ;)


там это оправдано
а здесь только activerecord используется. таки, овер


Тут не нужна переменная features, можно же сразу задать хеш:  `list[article] = { price: price, quantity: noun }`


append to cmdline
init -s initcall_debug

from [elinux.org](https://elinux.org/Initcall_Debug)

> Passing the option "initcall_debug" on the kernel command line will cause timing information to be printed to the console for each initcall.


Не нужно здесь использовать массив. Сразу выводи сумму за одну покупку и подсичтывай общую сумму, ее затем выведешь после цикла


TeamCity OTA+ :: rvi_sota_server :: ci [Build 2618](http://teamcity.prod01.internal.advancedtelematic.com:8111/viewLog.html?buildId=45662&buildTypeId=ota_plus_RviSotaServer_Ci) outcome was **FAILURE**
Summary: Exit code 1 (new) Build time: 00:01:20


Тут не нужен массив, достаточно просто интервала


Yes, Eli is right. Activity toasts do not work anymore with this change.


Similarity still fog


Используй each для перебора значений в массиве/интервале. А в данном случае лучше подойдет each_with_index


You are correct @romaindequidt. PR is welcome. But I'm thinking I should merge those 2 yaml files together I'm not a big fan of docker-compose extend mechanism. It's actually pretty limited and causes these kind of problem with volumes, networks, etc... Do you have a better idea ?


That would be a nice solution! :)
But, you should add an extra space after the `/` mark as well, and the `priceOfCandy` should be a property of the Candy class.


## Global

| Changed            |   Status |
|:-------------------|---------:|
| `metadata_passing` |      -60 |
| `metadata_total`   |      -60 |
| `nodes_count`      |    -1342 |
| `texts_passing`    |      -63 |
| `texts_total`      |      -63 |

## Words

| Changed   |   Status |
|:----------|---------:|
| `deu`     |    +1102 |
| `eng`     |  -128755 |
| `grc`     |  +393240 |
| `lat`     |     -200 |
| `mul`     |    -4030 |

## Units

| Changed                                                 | Status   |
|:--------------------------------------------------------|:---------|
| `./data/tlg0062/tlg036/__cts__.xml`                     | Deleted  |
| `./data/tlg0062/tlg036/tlg0062.tlg036.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0062/tlg037/__cts__.xml`                     | Deleted  |
| `./data/tlg0062/tlg037/tlg0062.tlg037.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0062/tlg038/__cts__.xml`                     | Deleted  |
| `./data/tlg0062/tlg038/tlg0062.tlg038.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0062/tlg039/__cts__.xml`                     | Deleted  |
| `./data/tlg0062/tlg039/tlg0062.tlg039.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0062/tlg040/__cts__.xml`                     | Deleted  |
| `./data/tlg0062/tlg040/tlg0062.tlg040.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0062/tlg041/__cts__.xml`                     | Deleted  |
| `./data/tlg0062/tlg041/tlg0062.tlg041.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg015/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg015/tlg0527.tlg015.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg016/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg016/tlg0527.tlg016.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg017/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg017/tlg0527.tlg017.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg018/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg018/tlg0527.tlg018.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg019/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg019/tlg0527.tlg019.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg020/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg020/tlg0527.tlg020.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg021/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg021/tlg0527.tlg021.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg023/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg023/tlg0527.tlg023.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg024/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg024/tlg0527.tlg024.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg025/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg025/tlg0527.tlg025.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg026/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg026/tlg0527.tlg026.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg027/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg027/tlg0527.tlg027.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg028/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg028/tlg0527.tlg028.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg029/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg029/tlg0527.tlg029.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg030/tlg0527.tlg030.opp-grc2.xml`     | New      |
| `./data/tlg0527/tlg031/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg031/tlg0527.tlg031.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg032/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg032/tlg0527.tlg032.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg033/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg033/tlg0527.tlg033.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg034/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg034/tlg0527.tlg034.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg034/tlg0527.tlg034.opp-grc2.xml`     | Deleted  |
| `./data/tlg0527/tlg035/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg035/tlg0527.tlg035.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg036/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg036/tlg0527.tlg036.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg037/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg037/tlg0527.tlg037.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg038/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg038/tlg0527.tlg038.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg039/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg039/tlg0527.tlg039.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg040/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg040/tlg0527.tlg040.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg041/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg041/tlg0527.tlg041.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg042/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg042/tlg0527.tlg042.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg043/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg043/tlg0527.tlg043.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg044/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg044/tlg0527.tlg044.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg045/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg045/tlg0527.tlg045.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg046/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg046/tlg0527.tlg046.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg047/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg047/tlg0527.tlg047.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg048/tlg0527.tlg048.1st1K-eng1.xml`   | Deleted  |
| `./data/tlg0527/tlg048/tlg0527.tlg048.1st1K-eng2.xml`   | Deleted  |
| `./data/tlg0527/tlg048/tlg0527.tlg048.1st1K-eng3.xml`   | Deleted  |
| `./data/tlg0527/tlg048/tlg0527.tlg048.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg048/tlg0527.tlg048.1st1K-mul1.xml`   | Deleted  |
| `./data/tlg0527/tlg049/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg049/tlg0527.tlg049.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg050/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg050/tlg0527.tlg050.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg051/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg051/tlg0527.tlg051.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg052/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg052/tlg0527.tlg052.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg053/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg053/tlg0527.tlg053.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg054/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg054/tlg0527.tlg054.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg055/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg055/tlg0527.tlg055.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg056/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg056/tlg0527.tlg056.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg057/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg057/tlg0527.tlg057.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg058/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg058/tlg0527.tlg058.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0527/tlg059/__cts__.xml`                     | Deleted  |
| `./data/tlg0527/tlg059/tlg0527.tlg059.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0592/__cts__.xml`                            | Deleted  |
| `./data/tlg0592/tlg001/__cts__.xml`                     | Deleted  |
| `./data/tlg0592/tlg001/tlg0592.tlg001.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg0592/tlg003/__cts__.xml`                     | Deleted  |
| `./data/tlg0592/tlg003/tlg0592.tlg003.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg1272/__cts__.xml`                            | Deleted  |
| `./data/tlg1272/tlg001/__cts__.xml`                     | Deleted  |
| `./data/tlg1272/tlg001/tlg1272.tlg001.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg1463/tlg001/tlg1463.tlg001.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg1463/tlg001/tlg1463.tlg001.1st1K-lat1.xml`   | Deleted  |
| `./data/tlg2034/tlg002/__cts__.xml`                     | Deleted  |
| `./data/tlg2034/tlg002/tlg2034.tlg002.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg2034/tlg003/__cts__.xml`                     | Deleted  |
| `./data/tlg2034/tlg003/tlg2034.tlg003.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg2034/tlg005/__cts__.xml`                     | Deleted  |
| `./data/tlg2034/tlg005/tlg2034.tlg005.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg2034/tlg027/__cts__.xml`                     | Deleted  |
| `./data/tlg2034/tlg027/tlg2034.tlg027.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg2035/__cts__.xml`                            | Deleted  |
| `./data/tlg2035/tlg003/__cts__.xml`                     | Deleted  |
| `./data/tlg2035/tlg003/tlg2035.tlg003.opp-grc1.xml`     | Deleted  |
| `./data/tlg2035/tlg003/tlg2035.tlg003.opp-lat1.xml`     | Deleted  |
| `./data/tlg2768/tlg002/__cts__.xml`                     | New      |
| `./data/tlg2768/tlg002/tlg2768.tlg002.opp-grc1.xml`     | New      |
| `./data/tlg2768/tlg002/tlg2768.tlg002.opp-lat1.xml`     | New      |
| `./data/tlg2806/__cts__.xml`                            | Deleted  |
| `./data/tlg2806/tlg001/__cts__.xml`                     | Deleted  |
| `./data/tlg2806/tlg001/tlg2806.tlg001.1st1K-grc1.xml`   | Deleted  |
| `./data/tlg4021/tlg001/__cts__.xml`                     | Deleted  |
| `./data/tlg4021/tlg001/tlg4021.tlg001.opp-grc1.xml`     | Deleted  |
| `./data/tlg4102/tlg039/__cts__.xml`                     | New      |
| `./data/tlg4102/tlg039/tlg4102.tlg039.opp-grc1.xml`     | New      |
| `./data/tlg4102/tlg046/__cts__.xml`                     | Deleted  |
| `./data/tlg4102/tlg046/tlg4102.tlg046.opp-grc1.xml`     | Deleted  |
| `./data/tlg5026/tlg001/__cts__.xml`                     | New      |
| `./data/tlg5026/tlg001/tlg5026.tlg001.1st1K-grc1.xml`   | New      |
| `./data/tlg5026/tlg007/tlg5026.tlg007.1st1K-grc1.xml`   | New      |
| `./data/tlg5026/tlg007/tlg5026.tlg007.First1K-grc1.xml` | Deleted  |
| `./data/tlg0527/tlg030/tlg0527.tlg030.opp-grc2.xml`     | Passing  |
| `./data/tlg2768/tlg002/__cts__.xml`                     | Passing  |
| `./data/tlg2768/tlg002/tlg2768.tlg002.opp-grc1.xml`     | Passing  |
| `./data/tlg2768/tlg002/tlg2768.tlg002.opp-lat1.xml`     | Passing  |
| `./data/tlg4102/tlg039/__cts__.xml`                     | Passing  |
| `./data/tlg4102/tlg039/tlg4102.tlg039.opp-grc1.xml`     | Passing  |
| `./data/tlg5026/tlg001/__cts__.xml`                     | Passing  |
| `./data/tlg5026/tlg001/tlg5026.tlg001.1st1K-grc1.xml`   | Passing  |
| `./data/tlg5026/tlg007/tlg5026.tlg007.1st1K-grc1.xml`   | Passing  |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/3120)*


libI420colorconvert.so is not needed anymore
also this really works?


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


I used **select2** plugin from **https://select2.org/**
I added in my project the css file: **select2.min**  and the js file: **select2.min**


Are you already compressing?? Including a small decompressor (lz4? zlib??) might be worth it sizewise, gets cheaper the more resources are added in the future.


TeamCity OTA+ :: rvi_sota_server :: ci [Build 2619](http://teamcity.prod01.internal.advancedtelematic.com:8111/viewLog.html?buildId=45664&buildTypeId=ota_plus_RviSotaServer_Ci) is now running


You should create actual Candy objects, not just increase a counter.


A good function/application has one entry point and one exit point (one exit per type - 1 good exit, 1 bad exit, one bad exeit with speciffic message etc. ).

In your new code you have all logic within the main() function. That is bad code.
You have `return 0;` statement in 3 places. This means 2 of the places are "_duplicated_". Further is more difficult to troubleshoot applciation why it erminated and in which line was the termination.

Optimally the `main()` function should only read the `std::cin` and call other logic to do the job.
Once the job is finished `main()` will continue and terminate the application with `return 0`; .


ach diese eins.. die ist quatsch :)


ок


You should work with actual Candy objects, not just decrease a counter.


Сделай метод current_station у поезда, чтобы он возвращал станцию из маршрута по текущему индексу. И везде обрщайся через него к текущей станции, у тебя будет код вида `current_station.receive_train(self)`. Просто и понятно. И самое главное - не нужно думать о том, что надо взять именно первую станцию, а не еще какую-то. Все решается через индекс


Well, I thought we link core statically in general, don't we? Apart from that, I do not see the interference, but I did not study the binutils linker code regarding all implications.


Здесь тоже замени на `current_station`


außerdem ist doch  `[...] && '1' == $this->params['send']` das gleiche wie `[...] && $this->params['send']`


Используй метод `insert` и отрицательный индекс, чтобы вставлять станцию на предпоследнее место.


Так и "sqlanywhere" больше 0.1.6 нет на rubygems


I'm on ActiveRecord 4.2.10 and this piece of code obviously makes my bindings disappear. It works fine, if I leave out the version check altogether. Since I don't known why the version check is needed at all, I couldn't come up with a proper fix for this.


ok, forget about my last two comments, i was confused this time ;-)


Some `Math.floor`s or `parseInt`s got removed. I added them back in e1234a09a


how would you implement the following requirement:

**"The input numbers can be A > B or  A < B, where in the second case the counting should be decreasing.
It is not allowed A = B."**


![](https://github.trello.services/images/mini-trello-icon.png) [Admins](https://trello.com/c/l8jnvKpM/5-admins)


each пишется на той же строке, что и переменная, к которой он отнсится.


Просто 2 аргумента в блоке укажи, не придется тогда обращаться по индексу и код будет значительно читаемее


shouldn't we package sample config files in `/usr/share/doc/balloon/examples/` instead?


На той же строке, что и интервал: `('а'..'я').each_with_index do |letter, index|`


поправил.


Cool. I've added you as a contributor. I have incorporated your changes into the NuGet package, if that's ok with you.


foo=foo version 999


Now that I look at it again: This could be a potential race condition. Unfortunately I couldn't find a clear documentation about whether or not tests can run in parallel but it looks like tests from different packages may run concurrently. This means that the log output will be undefined here.

If you want to avoid the data race you could refactor `LogPrintRRSets` to `FormatRRSets` returning a string. That way it becomes much easier to test and only slightly more difficult to use.


update


This function looks correct.


Using `frame_time` is a little problematic, because `uint32_t` is known to wrap around and we are forced to truncate to milliseconds. It might be better to add a `struct timespec last_finish` to `struct drm_output` and use that.


Use the helpers from `shared/timespec-util.h`.


Do not use a `static` non-const variable. Here it will also work wrong, because it means the frame counter gets shared by all virtual outputs, when it should be per output.
However, I don't think we need a frame counter here at all. You can just leave MSC at zero like every other backend does. There is no meaningful vblank counter we could offer without the remoting plugin receiving it from the remote.


case тут совершенно ни к чему, т.к. есть всего 2 варианта, причем, один из них не нужен, т.к. 28 дней для февраля уже заданы по-умолчанию. Поэтому, тут досаточно одного if, причем постфиксного:

`monthes['Февраль'] = 29 if is_year_leap?(result_year)`


You could just `assert` that `vblank_pending` is zero.


The return value of a timer handler should be zero, see documentation for `wl_event_loop_timer_func_t` in libwayland.