#' Performs student's t-test and stores data
#'
#' @param data expression data
#' @param group group vector
#' @param ref control group
#' @param case case group
#' @param var.equal assume equal variance
#' @param name name
#'
#' @return
#' @export
#'
#'
#'
studentstTest <- function(data, group, ref, case, var.equal = T, name) {
if(!hasArg(data)) {
message("Find data frame.")
data <- getData()
}
if(!hasArg(group)) {
message("Find group vektor.")
group <- getData()
}
group <- group[rownames(data)]
#assign ref and case
autoname = F
if(length(na.omit(unique(group))) == 2) {
if(hasArg(ref)) {
autoname = T
if(ref %in% group) {
case <- setdiff(na.omit(unique(group)), ref)
}
}
else {
group2 <- setSampleGroups(group = group, n = 2)
ref <- unique(group[group2 == 1])
case <- unique(group[group2 == 2])
}
}
else if(!hasArg(ref) || !hasArg(case)) {
group2 <- setSampleGroups(group = group, n = 2)
ref <- unique(group[group2 == 1])
case <- unique(group[group2 == 2])
}
data.log2 <- log2(data)
data.log2[is.infinite(data.log2)] <- 0
data.ttest <- matrix(ncol = 2, nrow = ncol(data))
rownames(data.ttest) <- colnames(data)
colnames(data.ttest) <- c("log2.fc", "p.value")
for(i in 1:nrow(data.ttest)) {
data.ttest[i,"log2.fc"] <- log2(mean(data[group == case,i]) / mean(data[group == ref,i]))
data.ttest[i,"p.value"] <- t.test(data.log2[group == case,i], data.log2[group == ref,i], var.equal = var.equal)$p.value
}
plot(data.ttest[,"log2.fc"],
-log10(data.ttest[,"p.value"]),
pch = 16,
xlab = paste0("log2 fold-change (", ref, "-", case, ")"),
ylab = "-log10(p-value)")
abline(h = -log10(0.05))
#Save results in list
if(autoname) {
name <- paste0("ttest_", case)
}
saveThis(data.ttest, name, destination = "dat")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.