The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: Statistical Metrics and Reporting Tool
Version: 0.1.2
Description: A 'Shiny'-based toolkit for item/test analysis. It is designed for multiple-choice, true-false, and open-ended questions. The toolkit is usable with datasets in 1-0 or other formats. Key analyses include difficulty, discrimination, response-option analysis, reports. The classical test theory methods used are described in Ebel & Frisbie (1991, ISBN:978-0132892314).
License: MIT + file LICENSE
Encoding: UTF-8
Depends: R (≥ 4.1)
Imports: shiny, dplyr, ggplot2, tidyr, purrr, stringr, readr, readxl, officer, flextable, glue, magrittr, jsonlite, tibble, htmltools
Suggests: testthat (≥ 3.0.0), knitr, rmarkdown, spelling, psychometric
VignetteBuilder: knitr
Config/testthat/edition: 3
URL: https://github.com/ahmetcaliskan1987/examly
BugReports: https://github.com/ahmetcaliskan1987/examly/issues
RoxygenNote: 7.3.3
Language: en-US
NeedsCompilation: no
Packaged: 2025-11-13 11:58:55 UTC; ahmetcaliskan
Author: Ahmet Çalışkan [aut, cre], Abdullah Faruk Kılıç [aut]
Maintainer: Ahmet Çalışkan <ahmetcaliskan1987@gmail.com>
Repository: CRAN
Date/Publication: 2025-11-13 17:40:24 UTC

Pipe operator

Description

See magrittr::%>% for details.

Usage

lhs %>% rhs

Arguments

lhs

A value or the magrittr placeholder.

rhs

A function call using the magrittr semantics.

Value

The result of calling rhs(lhs).


Create a colored HTML span badge (UI helper)

Description

Generates a colored HTML badge for displaying values (like p-values or correlations) in the Shiny UI.

Usage

color_badge(v, type = c("generic", "p", "r"))

Arguments

v

The numeric value to display.

type

The type of value ('generic', 'p', 'r') for coloring rules.

Value

An htmltools::span() object.

Examples

if (interactive()) {
  # Example for difficulty (p)
  color_badge(0.5, "p")
  # Example for discrimination (r)
  color_badge(0.2, "r")
}

Generate translation keys for overall comments

Description

Creates a vector of translation keys based on average difficulty (ap) and discrimination (ar).

Usage

comment_overall_keys(ap, ar)

Arguments

ap

Average difficulty (p-value).

ar

Average discrimination (r-value).

Value

A character vector of translation keys.

Examples

comment_overall_keys(0.6, 0.35) # Medium, Keep
comment_overall_keys(0.2, 0.15) # Hard, Remove

Calculate the mode

Description

Finds the most frequent value (the mode) in a vector.

Usage

d_mode(x)

Arguments

x

A vector.

Value

The mode of the vector. Returns NA if the vector is empty.

Examples

d_mode(c(1, 2, 2, 3, 3, 3, 4))
d_mode(c("a", "b", "a"))

Detect ID columns using regex

Description

Searches a vector of column names for common ID-related patterns.

Usage

detect_id_cols(cols)

Arguments

cols

A character vector of column names.

Value

A character vector of names that matched the ID pattern.

Examples

detect_id_cols(c("Ad", "Soyad", "ogrenci no", "Madde1", "StudentID"))

Generate label key for difficulty (p)

Description

Returns a specific translation key based on an item's difficulty value.

Usage

difficulty_label_key(p)

Arguments

p

A numeric item difficulty value.

Value

A character string (translation key).

Examples

difficulty_label_key(0.3) # Hard
difficulty_label_key(0.7) # Medium
difficulty_label_key(0.9) # Easy

Generate label key for discrimination (r)

Description

Returns a specific translation key based on an item's discrimination value.

Usage

discrimination_decision_key(r)

Arguments

r

A numeric item discrimination value.

Value

A character string (translation key).

Examples

discrimination_decision_key(0.15) # Remove
discrimination_decision_key(0.25) # Consider
discrimination_decision_key(0.4)  # Keep

Safely get quantile from 'psychometric' package

Description

Tries to get the default quant argument from psychometric::item.exam. Returns 0.27 if the package is not installed or an error occurs.

Usage

get_itemexam_quant()

Value

A numeric value for the quantile (default 0.27).

Examples

get_itemexam_quant()

Null-coalescing operator

Description

Returns a unless it is NULL; otherwise returns b.

Usage

a %||% b

Arguments

a

Left-hand side value.

b

Right-hand side fallback.

Value

a if not NULL, else b.


Load translation dictionary

Description

Finds ⁠<lang>.json⁠ under the installed package's ⁠i18n/⁠ folder and, if not found (during development), falls back to ⁠inst/i18n/<lang>.json⁠.

Usage

i18n_load(lang = "tr")

Arguments

lang

Character scalar language code. Currently "tr" or "en".

Value

A named list (key -> string) parsed from the JSON file.

Examples

# Always-fast: locate the installed TR dictionary (empty string if not installed)
system.file("shinyapp", "i18n", "tr.json", package = "examly")

# Safe example that runs only if the file actually exists
p <- system.file("shinyapp", "i18n", "tr.json", package = "examly")
if (nzchar(p) && file.exists(p)) {
  d <- i18n_load("tr")
  i18n_t(d, "ui.title", "Baslik")
}

Translate a UI/message key

Description

Returns the value for key from a dictionary produced by i18n_load(). If the key is missing, returns default when provided, otherwise the key itself.

Usage

i18n_t(dict, key, default = NULL)

Arguments

dict

Named list produced by i18n_load().

key

Character scalar; lookup key.

default

Optional fallback value if the key is not present.

Value

Character scalar.

Examples

# A quick, fully automatic check:
p <- system.file("shinyapp", "i18n", "en.json", package = "examly")
if (nzchar(p) && file.exists(p)) {
  d <- i18n_load("en")
  i18n_t(d, "buttons.download", "Download")
}

Check if a vector is scored 0/1

Description

Detects if a vector (after removing NAs) contains only 0 and 1.

Usage

is_scored_01(vec)

Arguments

vec

The vector to check.

Value

TRUE if the vector is 0/1 scored, FALSE otherwise.

Examples

is_scored_01(c(1, 0, 1, 0, NA))
is_scored_01(c(1, 0, 2, 0))
is_scored_01(c("A", "B", "C"))

Calculate KR-20 reliability coefficient

Description

Calculates the Kuder-Richardson 20 (KR-20) reliability coefficient for a data.frame or matrix of dichotomous (0/1) items.

Usage

kr20(m)

Arguments

m

A data.frame or matrix where rows are subjects and columns are dichotomously scored (0/1) items.

Value

A numeric value for the KR-20 coefficient, or NA_real_ if calculation is not possible.

Examples

item_matrix <- data.frame(
  m1 = c(1, 1, 0, 1),
  m2 = c(1, 0, 1, 1),
  m3 = c(0, 1, 0, 0)
)
kr20(item_matrix)

Normalize Column Names

Description

A helper function that takes a mixed character vector or a single semi-colon/comma-separated string and returns a clean character vector of column names.

Usage

norm_cols(x)

Arguments

x

A character vector or a single string containing column names.

Value

A character vector of trimmed, non-empty column names.

Examples

norm_cols(" m1 , m2;m3")
norm_cols(c(" m1 ", "m2", "", " m3 "))

Normalize letter grades

Description

Cleans and validates a vector of characters, keeping only standard letter grades (A, B, C, D, E).

Usage

norm_letter(x)

Arguments

x

A vector, typically character.

Value

A character vector of normalized grades (A-E) or NA.

Examples

norm_letter(c(" a ", "B", "c", "F", "d", NA))

Parse 1/0 coded data

Description

Validates that a vector contains only 1s, 0s, or NAs.

Usage

parse_lc_bin(x)

Arguments

x

A vector of potential 1/0 scores.

Value

An integer vector (1, 0, or NA).

Examples

parse_lc_bin(c(1, 0, "1", "0", 2, "A", NA))

Parse raw continuous/Likert scores

Description

Cleans a vector of potential scores, converting to numeric and removing invalid or out-of-range values.

Usage

parse_lc_raw(x)

Arguments

x

A vector (typically character) of raw scores.

Value

A numeric vector of cleaned scores.

Examples

parse_lc_raw(c("10", "5.5", "0", "-2", "ikiyüz", NA, "1000001"))

Score Multiple Choice items as 1/0

Description

Scores a Multiple Choice (A-E) response vector against a key.

Usage

parse_mc_bin(x, key)

Arguments

x

A vector of student responses.

key

The correct answer key (e.g., "A", "B").

Value

An integer vector (1=correct, 0=wrong, NA=invalid).

Examples

parse_mc_bin(c("a", "B", "c", "F", " b "), key = "B")

Score True/False items as 1/0

Description

Scores a True/False (Doğru/Yanlış) response vector against a key.

Usage

parse_tf_bin(x, key)

Arguments

x

A vector of student responses.

key

The correct answer key (e.g., "D", "Y", "TRUE", "FALSE").

Value

An integer vector (1=correct, 0=wrong, NA=invalid).

Examples

parse_tf_bin(c("D", "Y", "DOGRU", "False", "Belki"), key = "D")

Point-biserial correlation for item analysis

Description

Calculates the correlation between a single item's score and the rest of the total score.

Usage

pbiserial_rest(item, rest)

Arguments

item

A numeric vector of dichotomous item scores (0/1).

rest

A numeric vector of the total scores, excluding the item.

Value

The point-biserial correlation coefficient.

Examples

item1 <- c(1, 0, 1, 0, 1, 1)
rest_score <- c(10, 8, 12, 5, 9, 11)
pbiserial_rest(item1, rest_score)

Calculate q-index (1 - p)

Description

A simple helper to calculate the inverse of the p-value (difficulty index).

Usage

q_index(p)

Arguments

p

A numeric value or vector (item difficulty).

Value

A numeric value or vector (1 - p).

Examples

q_index(0.8)
q_index(c(0.2, 0.5, 0.7))

Launch examly Shiny application

Description

Launches the packaged Shiny app located in inst/shinyapp. If the app files are not found, a minimal placeholder app is launched instead.

Usage

run_app()

Details

This function is exported so users can run examly::run_app().

Value

Invisibly returns NULL. Called for its side effects.

Examples

system.file("shinyapp", package = "examly")
if(interactive()){
examly::run_app()
}

Student-level counts (Correct/Incorrect/Missing)

Description

Calculates the total number of correct, incorrect, and missing answers for each student (row).

Usage

student_counts(sc)

Arguments

sc

A data.frame of scored items (0=wrong, 1=correct, NA=missing).

Value

A tibble with columns Dogru, Yanlis, and Bos.

Examples

score_df <- data.frame(m1 = c(1, 0, 1), m2 = c(0, 1, NA), m3 = c(1, 1, 1))
student_counts(score_df)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.