Re: [R] a workaround for indexing a function?
See this? `[[alternative HTML version deleted]]` Means your efforts at including data have been sabotaged by failing to read the Posting guide and send plain text. Then this line:median[i] = median(normHL) Gets you: > Error in median[i] = median(normHL) : > > object of type 'closure' is not subsettable Were you under the impression that assignment to an indexed vector with a name would succeed when the vector had not already been pre-defined? R was interpreting that as assignment to an object named 'median' which it was able to find. The error was thrown because the located object is a function (aka closure). Better would be to chose a more specific object name and not one shared by a regular function. That also means you would have gotten the same error with objects named `df` (the density of the F distribution), `dt` (the t-distribution), `c` (the concatenation function), `C` (the contrasts function), `D` (the derivative function).. getting the idea that using one or two letter names might be fraught with confusion? Try using nor_med <- numeric(0) # before the loop and then in the loop use: nor_med[i] = median(normHL) -- david. On Jun 18, 2014, at 10:26 AM, Adam Kustka wrote: > I noticed a missing line in the code associated with my question. I've > re-supplied the question now with that line. > > Sorry for the trouble, > Adam > > > > > > I have a dataset of peptide 15N/14N ratios from four experiments (where > cells are grown under different conditions and were fed either 15N or 14N > nitrate aka plant food if you are interested) and I want to normalize each > of these ratios to the median 15N/14N value from all >6000 peptides from > each experiment. Then, since these ratios (from 2 or more peptides) are > used to calculate the protein 15N/14N abundance, I want to take the median > value of all peptides belonging to one protein to calculate the overall > protein 15N/14N abundance within that experiment. > > > > I’ve managed to break the data set into small pieces (by protein and by > experiment), which will lead to about 500 observations. > > > > A dummy – small – dataset could look like this (below), where V1 lists the > peptides that make up a protein, V2 is the protein ID, V3 is the metric of > interest (the 15N/14N ratio of each peptide), and V4 indicates which > experiment was run. > > > > The stumbling block here is that I cannot index the median function. > > > > Here is what I have done so far. > > > > y<-read.table(“nameoffile.txt”) > > > > h<-split(y,y$V4) > > > > for(n in names(h)) > > write.table(h[[n]], file=paste(y[[n]][,”V4”][4],”_”,n,”.TXT”,sep=””)) > > > > Then I (not elegantly but OK with brute force method for four files) went > into each file and calculated the median > > > > > > vls1<-read.table(“VLS5584_VLS5584.TXT”) # for example, but did this four > times for each file > > > > newcol=vls1[,3]/median(vls1[,3]) #make a new column of 15N/14N data now > normalized to median value… here this is shown for one of four experiments. > > > > > normvls1=cbind(vls1,newcol) #added to existing data with global median > normalized numbers. > > > > nvls1prot<-split(normvls1,normvls1$V2) #splits up this experiment into many > files.. one for each protein. > > > > for(n in > names(nvls1prot))write.table(nvls1prot[[n]],file=paste(nvls1prot[[n]][,"V4"][1],"_", > n,".TXT",sep="")) #writes these files > > > > Then I took this output in windows explorer and moved it to a new folder. > Set working directory to that folder. > > > > > > And, lifted from a help page and tweaked to my liking.. > > > > # batch import text files (files must be in working directory); > 'pattern' is case-sensitive > > txtfiles = list.files(pattern="*.TXT") > > > > for (i in 1:length(txtfiles)){ > > tmp = read.table(txtfiles[i]) > > xyz = data.frame(tmp) > > normHL = xyz[[5]] > >median[i] = median(normHL) > > } > > > > > > But after that, I get the following error message. > > > > Error in median[i] = median(normHL) : > > object of type 'closure' is not subsettable > > > > Thanks, > > Adam Kustka > > > > SEAEFVNYQVR > > B5YLU3 > > 0.226 > > VLS5584 > > LLQTEPGTR > > B5YLU3 > > 0.199 > > VLS5584 > > SEAEFVNYQVR > > B5YLU3 > > 0.216 > > VLS5585 > > LLQTEPGTR > > B5YLU3 > > 0.183 > > VLS5585 > > SEAEFVNYQVR > > B5YLU3 > > 0.266 > > VLS5586 > > FAQMAVLGFIIPEK > > B5YLU3 > > .2 > > VLS5586 > > LLQTEPGTR > > B5YLU3 > > 0.203 > > VLS5586 > > SEAEFVNYQVR > > B5YLU3 > > 0.516 > > VLS5587 > > FAQMAVLGFIIPEK > > B5YLU3 > > 0.764 > > VLS5587 > > IEGLGWRPK > > B5YLU3 > > .2 > > VLS5587 > > LLQTEPGTR > > B5YLU3 > > 0.338 > > VLS5587 > > LLQTEPGTR > > B5YLU3 > > .2 > > VLS5587 > > FSCAYLVDNPR > > B5YLV4 > > 0.131 > > VLS5584 > > ITCQDPSDDFPTYR > > B5YLV4 > > 0.122 > > VLS5584 > > SPLPEDLMPEFSFR > > B5YLV4 > > 0.105 > > VLS5584 > > I
Re: [R] a workaround for indexing a function?
I noticed a missing line in the code associated with my question. I've re-supplied the question now with that line. Sorry for the trouble, Adam I have a dataset of peptide 15N/14N ratios from four experiments (where cells are grown under different conditions and were fed either 15N or 14N nitrate aka plant food if you are interested) and I want to normalize each of these ratios to the median 15N/14N value from all >6000 peptides from each experiment. Then, since these ratios (from 2 or more peptides) are used to calculate the protein 15N/14N abundance, I want to take the median value of all peptides belonging to one protein to calculate the overall protein 15N/14N abundance within that experiment. Iâve managed to break the data set into small pieces (by protein and by experiment), which will lead to about 500 observations. A dummy â small â dataset could look like this (below), where V1 lists the peptides that make up a protein, V2 is the protein ID, V3 is the metric of interest (the 15N/14N ratio of each peptide), and V4 indicates which experiment was run. The stumbling block here is that I cannot index the median function. Here is what I have done so far. y<-read.table(ânameoffile.txtâ) h<-split(y,y$V4) for(n in names(h)) write.table(h[[n]], file=paste(y[[n]][,âV4â][4],â_â,n,â.TXTâ,sep=ââ)) Then I (not elegantly but OK with brute force method for four files) went into each file and calculated the median vls1<-read.table(âVLS5584_VLS5584.TXTâ) # for example, but did this four times for each file newcol=vls1[,3]/median(vls1[,3]) #make a new column of 15N/14N data now normalized to median value⦠here this is shown for one of four experiments. normvls1=cbind(vls1,newcol) #added to existing data with global median normalized numbers. nvls1prot<-split(normvls1,normvls1$V2) #splits up this experiment into many files.. one for each protein. for(n in names(nvls1prot))write.table(nvls1prot[[n]],file=paste(nvls1prot[[n]][,"V4"][1],"_", n,".TXT",sep="")) #writes these files Then I took this output in windows explorer and moved it to a new folder. Set working directory to that folder. And, lifted from a help page and tweaked to my liking.. # batch import text files (files must be in working directory); 'pattern' is case-sensitive txtfiles = list.files(pattern="*.TXT") for (i in 1:length(txtfiles)){ tmp = read.table(txtfiles[i]) xyz = data.frame(tmp) normHL = xyz[[5]] median[i] = median(normHL) } But after that, I get the following error message. Error in median[i] = median(normHL) : object of type 'closure' is not subsettable Thanks, Adam Kustka SEAEFVNYQVR B5YLU3 0.226 VLS5584 LLQTEPGTR B5YLU3 0.199 VLS5584 SEAEFVNYQVR B5YLU3 0.216 VLS5585 LLQTEPGTR B5YLU3 0.183 VLS5585 SEAEFVNYQVR B5YLU3 0.266 VLS5586 FAQMAVLGFIIPEK B5YLU3 .2 VLS5586 LLQTEPGTR B5YLU3 0.203 VLS5586 SEAEFVNYQVR B5YLU3 0.516 VLS5587 FAQMAVLGFIIPEK B5YLU3 0.764 VLS5587 IEGLGWRPK B5YLU3 .2 VLS5587 LLQTEPGTR B5YLU3 0.338 VLS5587 LLQTEPGTR B5YLU3 .2 VLS5587 FSCAYLVDNPR B5YLV4 0.131 VLS5584 ITCQDPSDDFPTYR B5YLV4 0.122 VLS5584 SPLPEDLMPEFSFR B5YLV4 0.105 VLS5584 ITCQDPSDDFPTYR B5YLV4 .2 VLS5585 FLEVPMYLK B5YLV4 .2 VLS5585 ITCQDPSDDFPTYR B5YLV4 0.113 VLS5585 ITCQDPSDDFPTYR B5YLV4 0.112 VLS5586 FSCAYLVDNPR B5YLV4 0.128 VLS5586 SPLPEDLMPEFSFR B5YLV4 0.126 VLS5586 FLEVPMYLKCLDR B5YLV4 0.406 VLS5586 LYYNVETLK B5YLV4 0.11 VLS5586 GEDGYLTTK B5YLV4 0.144 VLS5586 FLEVPMYLK B5YLV4 0.134 VLS5586 ITCQDPSDDFPTYR B5YLV4 .2 VLS5586 FSCAYLVDNPR B5YLV4 .2 VLS5586 FKDDFFLK B5YLV4 0.121 VLS5586 ITCQDPSDDFPTYRDLEK B5YLV4 0.138 VLS5586 FLEVPMYLK B5YLV4 0.123 VLS5586 CFDDAFVR B5YLV4 0.15 VLS5586 VFFTHGMYYTGGNLVAQVK B5YLV4 0.25 VLS5586 FKDDFFLK B5YLV4 0.141 VLS5586 CGFDEVHAR B5YLV4 0.108 VLS5586 YPENYNIEELPAAGQSYIHPDTYVQR B5YLV4 0.153 VLS5587 SPLPEDLMPEFSFR B5YLV4 0.153 VLS5587 FSCAYLVDNPR B5YLV4 0.137 VLS5587 LYYNVETLK B5YLV4 0.157 VLS5587 CGFDEVHAR B5YLV4 0.145 VLS5587 FLEVPMYLK B5YLV4 0.142 VLS5587 On Wed, Jun 18, 2014 at 9:12 AM, Adam Kustka wrote: > > > I have a dataset of peptide 15N/14N ratios from four experiments (where > cells are grown under different conditions and were fed either 15N or 14N > nitrate aka plant food if you are interested) and I want to normalize each > of these ratios to the median 15N/14N value from all >6000 peptides from > each experiment. Then, since these ratios (from 2 or more peptides) are > used to calculate the protein 15N/14N abundance, I want to take the median > value of all peptides belonging to one protein to calculate the overall > protein 15N/14N abundance within that experiment. > > > > Iâve managed to break the data set into small pieces (by protein and by > experiment), which will lead to about 500 observations. > > > > A d