大家好,我是你们最喜欢的编程专家之一。
我正在尝试在R中同时循环遍历两个文件:即取一个“case”文件和另一个“control”文件,创建图形并将其转储为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('control', 'case')
我找不到一种方法来指定每次循环要遍历哪两个文件。这些文件(每个文件有许多变量)为:"/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)
}
任何帮助都非常感激。谢谢!
myFiles <- list.files(...)
这一行的目的是什么?它并没有告诉你哪个文件属于哪种类型。为什么不直接遍历你已经拥有的文件列表呢?或者问题在于文件名不是简单的12H.txt、14C.txt等,因此你必须检查文件以确定它们对应的案例/控制? - bnaul