gpt4 book ai didi

r - 在 R 中使用 U 检验进行循环

转载 作者:行者123 更新时间:2023-11-28 20:27:42 25 4
gpt4 key购买 nike

我有一个文件,我想在 R 中应用 Whitney-U 检验。

file1_whitneyinput
mismatch match
0.166737436882143 8.09322497846657
8.65473982362 0.262366658627097
0.0499563
1.258946118432
0.466852
0.224554
2.59762
0.654455

而且,我还有其他类似格式的文件,但有些文件没有任何匹配或不匹配的列(只有其中一个):

file2_whitneyinput
mismatch match
2.736882143 4.09322497846657
0.651739833072362 0.26236673764384
0.0494545453
0.1445666119
3.463852
0.2100
0.56762

file3_whitneyinput
mismatch
2.336882143
0.35173
3.043
0.145666119

file4_whitneyinput
match
0.913
0.3517
2.033
0.8872
0.112

还有file5_whitneyinput等。

我想做的是分析所有这些并将文件名和 U 测试的输出写在同一个文件中,如下所示:

file1_whitneyinput
Wilcoxon rank sum test

data: ldf$match and ldf$mismatch
W = 11, p-value = 0.7273
alternative hypothesis: true location shift is not equal to 0
###########################
file2_whitneyinput
Wilcoxon rank sum test

data: ldf$match and ldf$mismatch
W = 10, p-value = 0.5273
alternative hypothesis: true location shift is not equal to 0

我现在只用到第一个文件就停止了,而且我也打印不出文件名:

library(data.table)
filenames <- list.files("./TRIAL", pattern="*whitneyinput", full.names=TRUE)
for(file in filenames){
library(tools)
bases <- file_path_sans_ext(file)
ldf <- fread(file)
output <- wilcox.test(ldf$match , ldf$mismatch, paired=FALSE)
chars <- capture.output(print(output))
writeLines(chars, con = file("output.txt"))

}
dev.off()

它给出了输出:

Wilcoxon rank sum test

data: ldf$match and ldf$mismatch
W = 11, p-value = 0.7273
alternative hypothesis: true location shift is not equal to 0

我曾尝试通过以下方式管理它:

writeLines(chars, con = basename(file("output.txt")))

但是,它没有提供任何输入。

如何在同一个文件中按顺序打印文件名及其分析结果?

另外:结果也可以写在不同的文件中。我试过将 dev.off 放在循环中,但也没有用。

最佳答案

尝试这样的事情:

rezults <- lapply(filenames, function(x) {
print(which(filenames == x))
ldf <- fread(x)
if (all(c("match", "mismatch") %in% colnames(ldf))) {
output <- wilcox.test(ldf$match , ldf$mismatch, paired=FALSE)
} else {
output <- "No data"
}
chars <- capture.output(print(output))
chars
}
)


rez <- lapply(seq_along(rezults), function(x) {
c("filename is:", filenames[x], rezults[[x]])
}
)
rez

writeLines(unlist(rez), con = file("output.txt"))

关于r - 在 R 中使用 U 检验进行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com