Entering edit mode
Harry Athanassiou
▴
10
@harry-athanassiou-1000
Last seen 10.3 years ago
I'm trying to use AnnBuilder to make some custom annotation files for
a
non-standard microarray chip. In running the tests with R-2.0.0, I run
acroos a problem in the function getList4GO. I'm not sure if this
issue is
due to R-2.0.0 or not.
Here's the issue:
when the sub-function procOne is called by sapply, the names(goids) is
NULL.
Thus when procOne calls :
apply(temp, 1, vect2List, vectNames = c("GOID", "Evidence",
"Ontology"))
the number of list-elements to be named is mismatched.
I do not know how to make sapply pass the names() of its first
argument to
the FUN() it calls, so I modified procOne->procOne.new to drop the
column
"Evidence".
And add this column with a trick afterwards.
I'm sure this is not the best solution, just worked for me
>>>
getList4GO <- function (goNCat, goNEvi)
{
procOne <- function(goids) {
if (is.null(goids) || is.na(goids)) {
return(NA)
}
else {
temp <- cbind(goids, names(goids), goNCat[goids])
rownames(temp) <- goids
return(apply(temp, 1, vect2List, vectNames = c("GOID",
"Evidence", "Ontology")))
}
}
# the names(goids) do not get propagated through the sapply() in
R-2.0.0!
# remove the column evidence
procOne.new <- function(goids) {
if (is.null(goids) || is.na(goids)) {
return(NA)
}
else {
temp <- cbind(goids, goNCat[goids])
rownames(temp) <- goids
return(apply(temp, 1, vect2List, vectNames = c("GOID",
"Ontology")))
}
}
temp <- sapply(goNEvi, procOne.new)
names(temp) <- 1:length(temp)
# add the evidence list-element
# do not know a better way will do a loop on an index to acc two
arrays
at the same time
for (r in 1:length(goNEvi)) {
if (!is.na(temp[r])) {
temp[[r]] <- c(temp[[r]], "Evidence"=names(goNEvi)[r])
}
}
return(temp)
}
>>>
Harry Athanassiou
BioInformatics manager
Automated Cell, Inc