r - 在 R 中执行大量 2 样本 t 检验
问题描述
所以我正在创建一个函数,它允许我获取一个 data.frame 并为每个测试的变量获取一个 p.values 的数据帧。
# data and labels
my_data <- data.frame(matrix(data = rnorm(10000), nrow = 100, ncol = 10000))
labels <- sample(0:1, 100, replace = TRUE)
# append the labels to the data, then filter
my_data$labels <- labels
sample_1 <- dplyr::filter(.data = my_data, labels == 0)
sample_2 <- dplyr::filter(.data = my_data, labels == 1)
#perform a t-test on each column
p_vals <- data.frame()
for(i in c(1:10000)) {
p_vals <- rbind(p_vals, t.test(x = sample_1[,i], y = sample_2[,i])$p.value)
}
return(p_vals)
这是功能性的,但我认为/希望在没有 for 循环的情况下会有更有效的方法来做到这一点。数据应该成行,因为对于以后的函数,跟踪哪个变量具有哪个 p 值很重要。
解决方案
您可以使用公式接口来代替拆分样本t.test
,并sapply
在 的列上my_data
进行测试:
p_vals <- sapply( my_data, function(x) t.test(x ~ labels)$p.value )
这将生成一个 p 值向量,其顺序将与my_data
推荐阅读
- javascript - 与本地存储一起使用的挂钩调用无效
- wordpress - 将引导程序排入 WordPress 的最佳实践是什么?
- python - 散列numpy对象数组,hashlib如何查看对象的内容而不仅仅是指针?
- c++ - clang 在 macOS 中编译到哪个版本的 c++?
- sql - 比较日期和数据列
- java - 等待 JButton 被按下
- unix - 使用 txt 文件中列出的序列 ID(不带版本号)提取 FASTA 序列(带版本号)
- java - 如何从对象中只绑定一个字段?
- file-upload - 使用 Alfresco 共享表单页面,如何上传包含元数据的新文件?
- eclipse - IDE Eclipse 不链接到其他打开的项目,而是链接到它的 jar