[R] new question
arun
smartpink111 at yahoo.com
Thu Feb 28 20:39:46 CET 2013
Hi,
directory<- "/home/arunksa111/data.new"
#first function
filelist<-function(directory,number,list1){
setwd(directory)
filelist1<-dir(directory)
direct<-dir(directory,pattern = paste("MSMS_",number,"PepInfo.txt",sep=""), full.names = FALSE, recursive = TRUE)
list1<-lapply(direct, function(x) read.table(x,header=TRUE, sep = "\t",stringsAsFactors=FALSE))
names(list1)<-filelist1
list2<- list(filelist1,list1)
return(list2)
}
foldernames1<-filelist(directory,23,list1)[[1]]
foldernames1
#[1] "a1" "c1" "c2" "c3" "t1" "t2"
lista<-filelist(directory,23,list1)[[2]] #lista output
FacGroup<- c("c1","c3","t2")
#Second function
f<-function(listRes,Toselect){
res2<-split(listRes,gsub("[0-9]","",names(listRes)))
res3<-lapply(seq_along(res2),function(i) lapply(res2[[i]],function(x) x[x[["FDR"]]<0.01,c("Seq","Mod","z","spec")]))
res4<-lapply(res3,function(x) x[names(x)[names(x)%in%Toselect]])
res4New<- lapply(res4,function(x) lapply(names(x), function(i) do.call(rbind,lapply(x[i],function(x) cbind(folder_name=i,x))) ))
library(plyr)
library(data.table)
res5<-lapply(res4New,function(x) lapply(x,function(x1){ x1<- data.table(x1);x1[,spec:=paste(spec,collapse=","),by=c("Seq","Mod","z")]}))
res6<- lapply(res5,function(x) lapply(x,function(x1) {x1$counts<-sapply(x1$spec, function(x2) length(gsub("\\s", "", unlist(strsplit(x2, ",")))));x3<-as.data.frame(x1);names(x3)[6]<- as.character(unique(x3$folder_name));x3[,-c(1,5)]}))
res7<-lapply(res6,function(x) Reduce(function(...) merge(...,by=c("Seq","Mod","z"),all=TRUE),x))
res8<-res7[lapply(res7,length)!=0]
res9<- Reduce(function(...) merge(...,by=c("Seq","Mod","z"),all=TRUE),res8)
res9[is.na(res9)] <- 0
return(res9)
}
f(lista,FacGroup)
head(f(lista,FacGroup))
# Seq Mod z c1 c3 t2
#1 aAAAAAAAAAAAAAATATAGPR 1-n_acPro/ 2 0 0 1
#2 aAAAAAAAAAAASSPVGVGQR 1-n_acPro/ 2 0 0 1
#3 aAAAAAAAAAGAAGGR 1-n_acPro/ 2 0 0 1
#4 aAAAAAAAGAAGGRGSGPGRR 1-n_acPro/ 2 1 0 0
#5 AAAAAAALQAK 2 0 1 1
#6 aAAAAAGAGPEMVR 1-n_acPro/ 2 0 0 2
resCounts<- f(lista,FacGroup)
t.test.p.value <- function(...) {
obj<-try(t.test(...), silent=TRUE)
if (is(obj, "try-error")) return(NA) else return(obj$p.value)
}
#3rd function for p-value
fpv<- function(Countdata){
resNew<-do.call(cbind,lapply(split(names(Countdata)[4:ncol(Countdata)],gsub("[0-9]","",names(Countdata)[4:ncol(Countdata)])), function(i) {x<-if(ncol(Countdata[i])>1) rowSums(Countdata[i]) else Countdata[i]; colnames(x)<-NULL;x}))
indx<-combn(names(resNew),2)
resPval<-do.call(cbind,lapply(seq_len(ncol(indx)),function(i) {x<-as.data.frame(apply(resNew[,indx[,i]],1,t.test.p.value)); colnames(x)<-paste("Pvalue",paste(indx[,i],collapse=""),sep="_");x}))
resF<-cbind(resCounts,resPval)
resF
}
fpv(resCounts)
A.K.
________________________________
From: Vera Costa <veracosta.rt at gmail.com>
To: arun <smartpink111 at yahoo.com>
Sent: Thursday, February 28, 2013 11:30 AM
Subject: new question
Sorry about my question, but I need a new small thing...I need to split my function to read data and to do the treatment of the data.
At first I need to know the "names" of the files and read data, and after a new function with my analysis.
So, I did this
directory<-"C:/Users/Vera Costa/Desktop/data.new"
filelist<-function(directory,number){
setwd(directory)
filelist<-dir(directory)
return(filelist)
direct<-dir(directory,pattern = paste("MSMS_",number,"PepInfo.txt",sep=""), full.names = FALSE, recursive = TRUE)
lista<-lapply(direct, function(x) read.table(x,header=TRUE, sep = "\t"))
names(lista)<-filelist
return(lista)
}
filelist(directory,23)
###"a1" "a2" "c1" "c2" "c3" "t1" "t2"
and after
f<-function(filelist,FacGroup){
res2<-split(lista,names(lista))
res3<- lapply(res2,function(x) {names(x)<-paste(gsub(".*_","",names(x)),1:length(x),sep="");x})
res3
#Freq FDR<0.01
res4<-lapply(seq_along(res3),function(i) lapply(res3[[i]],function(x) x[x[["FDR"]]<0.01,c("Seq","Mod","z","spec")]))
names(res4)<- names(res2)
res4
res4New<-lapply(res4,function(x) lapply(names(x),function(i) do.call(rbind,lapply(x[i],function(x) cbind(folder_name=i,x))) ))
res5<- lapply(res4New,function(x) if(length(x)>1) tail(x,-1) else NULL)
library(plyr)
library(data.table)
res6<- lapply(res5,function(x) lapply(x,function(x1) {x1<-data.table(x1); x1[,spec:=past
How can I "ask lista in second function? Could you help me?
More information about the R-help
mailing list