【发布时间】:2011-10-14 17:51:50
【问题描述】:
您好,我最喜欢的编码专家,
我试图在 R 中一次遍历两个文件:即获取一个“案例”文件和另一个“控制”文件,创建一个图形并将其转储为 pdf,然后获取另一组 2 个文件并执行以此类推。我有一个列表,指示哪个文件是案例,哪个是控件,如下所示:
case control
A01 G01
A02 G02
A06 G03
等等……可以这样复制: mylist
我找不到指定每次循环遍历哪两个文件的方法。 文件(每个文件都有很多变量)是:“/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和control,我想这样做:
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)
}
非常感谢任何帮助。谢谢!
【问题讨论】:
-
目录中的文件是如何组织的?文件名是否有一些模式,例如case1.txt/control1.txt、case2.txt/control2.txt等?
-
你好 bnaul,不幸的是没有模式......看起来字母和数字是随机的......
-
这里的许多事情都令人困惑。如果您有一个案例和控制文件的列表,
myFiles <- list.files(...)行的用途是什么,它没有为您提供有关哪个文件属于哪种类型的信息?为什么不只遍历你已经拥有的文件列表呢?还是文件名不是简单的 12H.txt、14C.txt 等的问题,因此您必须检查文件以确定它们对应的案例/控件? -
myFiles 有文件的路径,而案例和控制文件只是从文件名的最后部分指定哪些是案例和控制,但我当然可以将其扩展为文件名,如果这有助于...
-
@user971102 这听起来很奇怪。听起来您是在说文件名 没有区分模式 可以指示哪些是案例和控件,甚至哪些是对?这可能只有在您能够清楚地解释如何根据文件名或内容的某些特征来区分这两种类型时才能解决。