R/create_psy_fun.R

Defines functions create_psy_fun

Documented in create_psy_fun

#' Creates the psychometric function
#' \code{create_psy_fun} creates the psychometric function
#' @keywords internal
#' @export
create_psy_fun <- function(psy_fun, guess, lapses) {
  psy_fun <- psy_fun
  function (x,p) {
    if (is.numeric(guess) && is.numeric(lapses)) {
      guess <- guess
      lapses <- lapses
      pshape <- p
    }
    if (is.logical(guess) && is.logical(lapses)){
      if (guess && lapses) {
        guess <- tail(p,2)[1]
        lapses <- tail(p,2)[2]
        pshape <- head(p,-2)
      }
      if (!guess && !lapses) {
        guess <- 0
        lapses <- 0
        pshape <- p
      }
    }
    if (is.numeric(guess) && is.logical(lapses)){
      if (lapses) {
        guess <- guess
        lapses <- tail(p,1)
        pshape <- head(p,-1)
      }
      if (!lapses) {
        guess <- guess
        lapses <- lapses
        pshape <- p
      }
    }
    if (is.logical(guess) && is.numeric(lapses)){
      if (guess) {
        guess <- tail(p,1)
        lapses <- lapses
        pshape <- head(p,-1)
      }
      if (!guess) {
        guess <- guess
        lapses <- lapses
        pshape <- p
      }
    }
    return(guess + (1 - guess- lapses) * psy_fun(x, pshape))
  }
}

Try the quickpsy package in your browser

Any scripts or data that you put into this service are public.

quickpsy documentation built on Oct. 2, 2019, 5:03 p.m.