Nothing
# from https://stevenmortimer.com/the-unfinished-duplicated-function/
new_duplicated <- function(x, incomparables = FALSE, fromLast = FALSE, ...) {
if(!identical(incomparables, FALSE)) {
n <- ncol(x)
nmx <- names(x)
nmincomparables <- names(incomparables)
lincomparables <- length(incomparables)
if(is.null(nmincomparables)) {
if(lincomparables < n) {
# pad any incomparables lists with the default value if list is shorter than the number columns in the supplied data.frame
tmp <- c(incomparables, as.list(rep_len(FALSE, n - lincomparables)))
names(tmp) <- nmx
incomparables <- tmp
}
if(lincomparables > n) {
# if the list is unnamed and there are more elements in the list than there are columns, then only first n elements
warning(paste("more columns in 'incomparables' than x, only using the first", n, "elements"))
incomparables <- incomparables[1:n]
}
} else {
# for named lists, find match, else default value
tmp <- as.list(rep_len(FALSE, n))
names(tmp) <- nmx
i <- match(nmincomparables, nmx, 0L)
if(any(i <= 0L))
warning("not all columns named in 'incomparables' exist")
tmp[ i[i > 0L] ] <- incomparables[i > 0L]
incomparables <- tmp[nmx]
}
# first determine duplicates, then override when an incomparable value is found in a row since the existence of even 1 incomparable value in a row means it cannot be a duplicate
res <- duplicated(do.call("paste", c(x, sep="\r")), fromLast = fromLast)
#for better performance only bother with the columns that have incomparable values not set to the default: !identical(x, FALSE)
run_incomp_check <- sapply(incomparables, FUN=function(x){!identical(x, FALSE)})
if (sum(run_incomp_check) > 0L){
incomp_check <- mapply(FUN=function(column,incomparables){match(column, incomparables)}, x[run_incomp_check], incomparables[run_incomp_check])
# any rows with an incomparable match means, TRUE, it can override the duplicated result
overwrite <- apply(data.frame(incomp_check), 1, function(x){any(!is.na(x))})
res[overwrite] <- FALSE
}
return(res)
} else if(length(x) != 1L) {
duplicated(do.call("paste", c(x, sep="\r")), fromLast = fromLast)
} else {
duplicated(x[[1L]], fromLast = fromLast, ...)
}
}
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.