Nothing
# This function queries the repository for packages and finds the urls
# for all the packages a given package depends on. The urls will be
# returned as list that contains the repository, url, and version
# number of the package and a list of the urls for all the packages the
# package depends on.
#
# pkgName: a character string for the name of the package whose
# dependency will be queried.
# pkgVersion: a integer for the version number of the packages on
# which a given package depends. Default is to get the largest versin
# number.
# type: a character string for the type of the package. Should be
# either "unix" or "windows".
# repositories: a list of urls for the respositories to be
# searched. The default is bioconductor and then CRAN.
#
query.packages <- function (pkgName, pkgVersion = NULL, type = "unix",
repositories = getDefaultRep(bioCOnly = FALSE)){
on.exit(options(show.error.messages = TRUE))
pkgFound <- FALSE
collectedItem <- NULL
pkgPat <- getPkgPat(pkgName)
returnList <- list(repository = NULL,
packUrl = NULL,
version = ifelse(is.null(pkgVersion), -1, pkgVersion),
type = ifelse(is.null(type), .Platform$OS.type, type),
depends = NULL)
tempRep <- NULL
tempSUrl <- NULL
tempZUrl <- NULL
tempDep <- NULL
tempVer <- -1
listReady <- FALSE
doList <- function(){
if(is.null(pkgVersion)){
if(tempRep == paste(getOption("repositories"),
"/PACKAGES", sep = "")){
tempSUrl <<- paste(getOption("repositories"), "/",
pkgName, "_", tempVer, ".tar.gz",
sep = "")
tempZUrl <<- avlCheck(pkgName)
}
if(tempVer >= returnList$version){
returnList$repository <<- tempRep
if(!is.null(tempSUrl) && !is.null(tempZUrl))
returnList$packUrl <<- ifelse(type == "unix",
tempSUrl, tempZUrl)
returnList$version <<- tempVer
if(!is.null(tempDep))
returnList$depends <<- formatLine(tempDep)
listReady <<- TRUE
pkgFound <<- FALSE
}
}else{
if(tempVer == returnList$version){
returnList$repository <<- tempRep
if(!is.null(tempSUrl) && !is.null(tempZUrl))
returnList$packUrl <<- ifelse(type == "unix",
tempSUrl, tempZUrl)
returnList$version <<- tempVer
if(!is.null(tempDep))
returnList$depends <<- formatLine(tempDep)
listReady <<- TRUE
pagFound <<- FALSE
}
}
}
for(i in repositories){
pakRep <- getRep(i)
tempRep <- i
for(j in pakRep){
if(isPak(j)){
# doList whenever we see a match
if(pkgFound)
doList()
if(regexpr(pkgPat, j) == 1)
pkgFound <- TRUE
else
pkgFound <- FALSE
}
if(pkgFound){
switch(sub("(^.*): .*", "\\1", j),
"Version" = tempVer <- sub("^.*: *(.*)","\\1",j),
"SourceURL" = tempSUrl <-
sub("^.*(http://.*)","\\1",j),
"Win32URL" = tempZUrl <- sub("^.*(http://.*)","\\1",j),
"Depends" = tempDep <- getDepends(j))
}
}
# do list again in case the match is the last one
if(pkgFound)
doList()
# Taken out to be in line with the new format of PACKAGES
# if(listReady)
# break
}
if(listReady)
return(returnList)
else{
toPut <- ifelse(is.null(pkgVersion), "",
paste(" Version", pkgVersion))
print(paste("Can not find package ", pkgName,
toPut, " in repositories", sep = ""))
return(NULL)
}
}
getDefaultRep <- function (bioCOnly = FALSE){
if(bioCOnly)
return(list(BioC =
"http://www.bioconductor.org/packages/release/distrib/PACKAGES"))
else
return(list(BioC =
"http://www.bioconductor.org/packages/release/distrib/PACKAGES",
CRAN = paste(getOption("repositories"), "/PACKAGES", sep = "")))
}
getRep <- function(rep){
on.exit(options(show.error.messages = TRUE))
con <- url(rep)
options(show.error.messages = FALSE)
tryMe <- try(readLines(con))
#for testing using a local file only
#tryMe <- try(readLines("PACKAGES"))
options(show.error.messages = TRUE)
if(inherits(tryMe, "try-error"))
stop(paste("Invalid repository url", rep))
close(con)
return(tryMe)
}
getPkgPat <- function(pkgName){
return(paste("Package: *", pkgName, sep = ""))
}
isPak <- function(aLine){
return(ifelse(regexpr("Package:.*", aLine) == 1, TRUE, FALSE))
}
getDepends <- function(dep){
on.exit(options(show.error.messages = TRUE))
depList <- NULL
options(show.error.messages = FALSE)
tryMe <- try(sub("^.*: *(.*)","\\1",dep))
options(show.error.messages = TRUE)
if(tryMe == "" || is.null(tryMe) || is.na(tryMe)){
depList <- NULL
}else{
dep <- sub("^.*: *(.*)","\\1",dep)
deps <- unlist(strsplit(dep, ","))
for(i in 1:length(deps)){
depList[[i]] <- deps[i]
}
}
return(depList)
}
formatLine <- function(aLine){
return(gsub("^ *(.*)", "\\1", aLine))
}
avlCheck <- function(pkgName){
on.exit(options(show.error.message = TRUE))
options(show.error.messages = FALSE)
tryMe <- try(url(paste("http://cran.r-project.org/bin/",
"windows/contrib/", pkgName,
".zip", sep = ""), "r"))
if(!inherits(tryMe, "try-error")){
close(tryMe)
return(paste("http://cran.r-project.org/bin/",
"windows/contrib/", pkgName,
".zip", sep = ""))
}
tryMe <- try(url(paste("http://cran.r-project.org/bin/",
"windows/base/", pkgName,
".zip", sep = ""), "r"))
if(!inherits(tryMe, "try-error")){
close(tryMe)
return(paste("http://cran.r-project.org/bin/",
"windows/base/", pkgName,
".zip", sep = ""))
}else{
return("Unavailable")
}
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.