Nothing
### This file is part of 'EvaluateCore' package for R.
### Copyright (C) 2018-2022, ICAR-NBPGR.
#
# EvaluateCore is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# EvaluateCore is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# A copy of the GNU General Public License is available at
# https://www.r-project.org/Licenses/
#' Common checks for all functions
#'
#' Not exported. Strictly internal
#'
#' @keywords internal
#'
#' @inheritParams snk.evaluate.core
#' @inheritParams chisquare.evaluate.core
#
checks.evaluate.core <- function(data, names, quantitative = NULL,
qualitative = NULL, selected) {
# check if 'data' is a data frame object
if (!is.data.frame(data)) {
stop('"data" should be a data frame object')
}
if (any(c("tbl_dataf", "tbl") %in% class(data))) {
warning('"data" is of type tibble\nCoercing to data frame')
data <- as.data.frame(data)
}
# check if 'names' argument is character vector of unit length
if (!(is.character(names) && length(names) == 1)) {
stop('"names" should be a character vector of unit length')
}
# check if 'quantitative' argument is a character vector
if (!is.null(quantitative)) {
if (!is.character(quantitative)) {
stop('"quantitative" should be a character vector')
}
}
# check if 'qualitative' argument is a character vector
if (!is.null(qualitative)) {
if (!is.character(qualitative)) {
stop('"qualitative" should be a character vector')
}
}
# check if 'names' column is present in 'data'
if (!(names %in% colnames(data))) {
stop(paste('Column ', names,
' specified as the "names" column is not present in "data"',
sep = ""))
}
# check if 'quantitative' columns are present in 'data'
if (!is.null(quantitative)) {
if (FALSE %in% (quantitative %in% colnames(data))) {
stop(paste('The following column(s) specified in "quantitative" not present in "data":\n',
paste(quantitative[!(quantitative %in% colnames(data))],
collapse = ", "),
sep = ""))
}
}
# check if 'qualitative' columns are present in 'data'
if (!is.null(qualitative)) {
if (FALSE %in% (qualitative %in% colnames(data))) {
stop(paste('The following column(s) specified in "qualitative" not present in "data":\n',
paste(qualitative[!(qualitative %in% colnames(data))],
collapse = ", "),
sep = ""))
}
}
# check if overlap exists between 'quantitative' and 'qualitative'
if ((!is.null(quantitative)) & (!is.null(qualitative))) {
if (length(intersect(quantitative, qualitative)) != 0) {
stop(paste('The following column(s) is/are specified in "quantitative" and "qualitative":\n',
paste(intersect(quantitative, qualitative),
collapse = ", "),
sep = ""))
}
}
# check if 'names' column is of type character
if (!is.character(data[, names])) {
stop('"names" column in "data" should be of type character')
}
# check if 'quantitative' columns are of type numeric/integer
if (!is.null(quantitative)) {
intquantcols <- unlist(lapply(data[, quantitative],
function(x) FALSE %in% (is.vector(x, mode = "integer") | is.vector(x, mode = "numeric"))))
if (TRUE %in% intquantcols) {
stop(paste('The following "quantitative" column(s) in "data" are not of type numeric:\n',
paste(names(intquantcols[intquantcols]), collapse = ", ")))
}
}
# check if 'qualitative' columns are of type factor
if (!is.null(qualitative)) {
intqualcols <- unlist(lapply(data[, qualitative],
function(x) is.factor(x)))
if (FALSE %in% intqualcols) {
stop(paste('The following "qualitative" column(s) in "data" are not of type factor:\n',
paste(names(intqualcols[!intqualcols]), collapse = ", ")))
}
}
# check if 'selected' is a vector of type character
if (!is.vector(selected, mode = "character")) {
stop('"selected" should be a character vector')
}
# check if selected > entire collection
if (length(selected) > nrow(data)) {
stop('"selected" is more than the number of records in "data"')
}
# check if 'selected' present in 'names' column
if (!all(selected %in% data[, names])) {
stop('All "selected" not present in "names" column of "data"')
}
# check for missing values
missvcols <- unlist(lapply(data[, quantitative],
function(x) TRUE %in% is.na(x)))
if (TRUE %in% missvcols) {
stop(paste('The following column(s) in "data" have missing values:\n',
paste(names(missvcols[missvcols]), collapse = ", ")))
}
# check for duplication in names
if (any(duplicated(data[, names]))) {
warning('Duplicated entries exist in "names" column')
}
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.