Nothing
test_that("clean.conc.na", {
# Check that it gives errors for invalid conc.na values
expect_error(clean.conc.na(conc=1, time=1, conc.na="foo"),
regexp="conc.na must either be a finite number or the text 'drop'")
# It drops NA values if requested (even if they are the only value)
expect_warning(v1 <-
clean.conc.na(conc=as.numeric(NA), time=1, conc.na="drop"))
expect_equal(v1,
data.frame(conc=numeric(), time=numeric()))
expect_warning(v2 <-
clean.conc.na(conc=as.numeric(c(NA, NA)), time=1:2,
conc.na="drop"))
expect_equal(v2,
data.frame(conc=numeric(), time=numeric()))
expect_equal(clean.conc.na(conc=c(1, NA), time=1:2, conc.na="drop"),
data.frame(conc=1, time=1))
expect_equal(clean.conc.na(conc=c(1, NA, 2), time=1:3, conc.na="drop"),
data.frame(conc=1:2, time=c(1, 3)),
ignore_attr=TRUE)
# It also works with a number as the conc.na value
expect_warning(v3 <-
clean.conc.na(conc=as.numeric(NA), time=1, conc.na=5))
expect_equal(v3,
data.frame(conc=5, time=1))
expect_warning(v4 <-
clean.conc.na(conc=c(NA, NA), time=1:2, conc.na=5))
expect_equal(v4,
data.frame(conc=c(5, 5), time=1:2))
expect_equal(clean.conc.na(conc=c(1, NA), time=1:2, conc.na=5),
data.frame(conc=c(1, 5), time=1:2))
expect_equal(clean.conc.na(conc=c(1, NA, 2), time=1:3, conc.na=5),
data.frame(conc=c(1, 5, 2), time=1:3))
# It doesn't touch BLQ
expect_equal(clean.conc.na(conc=0, time=1, conc.na="drop"),
data.frame(conc=0, time=1))
expect_equal(clean.conc.na(conc=c(0, 0), time=1:2, conc.na="drop"),
data.frame(conc=c(0, 0), time=1:2))
expect_equal(clean.conc.na(conc=c(1, 0), time=1:2, conc.na="drop"),
data.frame(conc=c(1, 0), time=1:2))
expect_equal(clean.conc.na(conc=c(1, 0, 2), time=1:3, conc.na="drop"),
data.frame(conc=c(1, 0, 2), time=1:3))
# Additional arguments are returned into the data frame and
# filtered if NA conc goes with them.
expect_equal(
clean.conc.na(
conc=1:3,
time=1:3,
extra=c("a", "b", "c"),
conc.na="drop"
),
data.frame(
conc=1:3,
time=1:3,
extra=c("a", "b", "c"),
stringsAsFactors=FALSE
)
)
expect_equal(
clean.conc.na(
conc=c(1, NA, 2),
time=1:3,
extra=c("a", "b", "c"),
conc.na="drop"
),
data.frame(
conc=1:2,
time=c(1, 3),
extra=c("a", "c"),
stringsAsFactors=FALSE
),
ignore_attr=TRUE
)
})
test_that("clean.conc.blq", {
# If there are no BLQ values or NA values, it does nothing
d.test <- data.frame(conc=1, time=1)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test)
# If there are NA values, it runs conc.na on those and returns that
d.test <- data.frame(conc=c(1, NA), time=1:2)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
clean.conc.na(d.test$conc, d.test$time, conc.na="drop"))
# If there are BLQ values at the beginning, drops those if given a
# simple drop
d.test <- data.frame(conc=c(0, 1), time=1:2)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test[2,])
# It leaves beginning BLQs if instructed with a list.
d.test <- data.frame(conc=c(0, 1), time=1:2)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq=list(
first="keep",
middle="drop",
last="drop"),
conc.na="drop"),
d.test)
# Errors in how to handle first/middle/last rules are caught.
d.test <- data.frame(conc=c(0, 1), time=1:2)
expect_error(clean.conc.blq(d.test$conc, d.test$time,
conc.blq=list(
first="foo",
middle="drop",
last="drop"),
conc.na="drop"),
regexp="conc.blq must either be a finite number or the text 'drop' or 'keep'")
expect_error(clean.conc.blq(d.test$conc, d.test$time,
conc.blq=list(
first="keep",
middle="foo",
last="drop"),
conc.na="drop"),
regexp="conc.blq must either be a finite number or the text 'drop' or 'keep'")
expect_error(clean.conc.blq(d.test$conc, d.test$time,
conc.blq=list(
first="keep",
middle="drop",
last="foo"),
conc.na="drop"),
regexp="conc.blq must either be a finite number or the text 'drop' or 'keep'")
# If there are BLQ values at the end, it drops them if the
# instructions are generic drop.
d.test <- data.frame(conc=c(1, 0), time=1:2)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test[1,])
# And it keeps them if instructed with a list.
d.test <- data.frame(conc=c(1, 0), time=1:2)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq=list(
first="drop",
middle="drop",
last="keep"),
conc.na="drop"),
d.test)
# If there are BLQ values at the beginning and end, it drops those
# if given a single instruction.
d.test <- data.frame(conc=c(0, 1, 0), time=1:3)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test[2,])
# If all values are BLQ, drops all rows
d.test <- data.frame(conc=0, time=1:3)
expect_equal(
clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test[logical(),]
)
# If there are BLQ values in the middle, it drops or keeps those or
# sets them to a number
d.test <- data.frame(conc=c(1, 0, 2), time=1:3)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test[-2,])
d.test <- data.frame(conc=c(1, 0, 2), time=1:3)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="keep", conc.na="drop"),
d.test)
d.test <- data.frame(conc=c(1, 0, 2), time=1:3)
d.result <- data.frame(conc=c(1, 0.5, 2), time=1:3)
expect_equal(
clean.conc.blq(
d.test$conc, d.test$time,
conc.blq=0.5, conc.na="drop"
),
d.result
)
expect_equal(
clean.conc.blq(
d.test$conc, d.test$time,
conc.blq=list(first=0, middle=0.5, last=0), conc.na="drop"
),
d.result,
info="fix related item to #145"
)
# If there are BLQ values at the beginning, middle, and end, it
# only drops all of them or drops them selectively as instructed.
d.test <- data.frame(conc=c(0, 1, 0, 2, 0), time=1:5)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na="drop"),
d.test[c(2, 4),])
for (first in c("drop", "keep")) {
for (middle in c("drop", "keep")) {
for (last in c("drop", "keep")) {
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq=list(
first=first,
middle=middle,
last=last),
conc.na=0),
d.test[c(first %in% "keep",
TRUE,
middle %in% "keep",
TRUE,
last %in% "keep"),],
info=paste(first, middle, last))
}
}
}
# When conc.na is 0, it drops those.
d.test <- data.frame(conc=c(0, 1, NA, 2, 0), time=1:5)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na=0),
d.test[c(2, 4),])
# When conc.na is a number, it keeps those
d.test <- data.frame(conc=c(0, 1, NA, 2, 0), time=1:5)
d.result <- data.frame(conc=c(0, 1, 0.5, 2, 0), time=1:5)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
conc.blq="drop", conc.na=0.5),
d.result[2:4,])
# It passes additional to be part of the output data frame
d.test <- data.frame(conc=c(0, 1, NA, 2, 0), time=1:5, more=6:10)
d.result <- data.frame(conc=c(0, 1, 0.5, 2, 0), time=1:5, more=6:10)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
more=d.test$more,
conc.blq="drop", conc.na=0.5),
d.result[2:4,])
d.test <- data.frame(conc=c(0, 1, NA, 2, 0), time=1:5, more=6:10)
expect_equal(clean.conc.blq(d.test$conc, d.test$time,
more=d.test$more,
conc.blq="drop", conc.na="drop"),
d.test[c(2,4),])
})
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.