gpt4 book ai didi

r - 使用 R,一次循环两个文件

转载 作者:行者123 更新时间:2023-12-02 02:21:46 25 4
gpt4 key购买 nike

你好,我最喜欢的编码专家,

我试图在 R 中一次遍历两个文件:即获取一个“案例”文件和另一个“控制”文件,创建一个图形并将其转储为 pdf,然后获取另一组 2 个文件并执行同理等等。我有一个列表,指示哪个文件是一个案例,哪个是一个控件,如下所示:

case   control
A01 G01
A02 G02
A06 G03

等等……可以这样重现: mylist<- data.frame(rbind(c("A01","G01"),c("A02","G02"),c("A06","G03"))) colnames(mylist)<- c('控制', '案例')

我找不到一种方法来指定每次循环访问哪 2 个文件。文件(每个文件都有很多变量)是:“/Users/francy/Desktop/cc_files_A01”,“”/Users/francy/Desktop/cc_files_A02”,“/Users/francy/Desktop/cc_files_A06”,“/Users/francy/Desktop/cc_files_G01", "/Users/francy/Desktop/cc_files_G02", "/Users/francy/Desktop/cc_files_G03"

对于每组病例和对照,我想这样做:

case<- read.table(file="/Users/francy/Desktop/case_files_A01.txt", sep = '\t', header = F)
case <- case[,c(1,2,19,20)]
colnames(case)<- c("ID", "fname", "lname", "Position")

control<- read.table(file="/Users/francy/Desktop/case_files_G01.txt", sep = '\t', header = F)
control <- control[,c(1,2,19,20)]
colnames(control)<- c("ID", "fname", "lname", "Position")

#t-test Position:
test<- t.test(case[20],control[20])
p.value= round(test$p.value, digits=3)
mean_case= round(mean(case[20], na.rm=T), digits=2)
mean_control= round(mean(control[20], na.rm=T), digits=2)

boxplot(c(case[20], control[20]), names=c(paste("case", "mean", mean_case, sep=":"),paste("control", "mean", mean_control, sep=":")))

并想创建一个包含所有箱线图的 pdf 文件。

这是我目前拥有的:

myFiles <- list.files(path= "/mypath/", pattern=".txt")
pdf('/home/graph.pdf')
for (x in myFiles) {
control <- read.table(file = myFiles[x], sep = '\t', header = F)
## How do I specify that is the other file here, and which file it is?
case <- read.table(file = myFiles[x], sep = '\t', header = F)
}

非常感谢任何帮助。谢谢!

最佳答案

为什么不通过列表将文件对传递给循环?

files <- list(
c("fileA","fileB"),
c("fileC","fileD")
)

for( f in files ) {
cat("~~~~~~~~\n")
cat("f[1] is",f[1],"~ f[2] is",f[2],"\n")
}

循环第一次运行时,f 包含列表 files 的第一个元素。由于第一个元素是长度为 2 的字符向量,因此 f[1] 包含该对的第一个文件名,而 f[2] 包含第二个。请参阅上述代码的打印输出,希望它能说明问题。

关于r - 使用 R,一次循环两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7771547/

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