[rkward-cvs] SF.net SVN: rkward-code:[4532] trunk/rkward/packages/rkwarddev
m-eik at users.sf.net
m-eik at users.sf.net
Sat Feb 9 00:14:46 UTC 2013
Revision: 4532
http://sourceforge.net/p/rkward/code/4532
Author: m-eik
Date: 2013-02-09 00:14:44 +0000 (Sat, 09 Feb 2013)
Log Message:
-----------
rkwarddev: added matrix function, internally replaced getter functions again (this time for real...)
Modified Paths:
--------------
trunk/rkward/packages/rkwarddev/ChangeLog
trunk/rkward/packages/rkwarddev/DESCRIPTION
trunk/rkward/packages/rkwarddev/NAMESPACE
trunk/rkward/packages/rkwarddev/R/rk-internal.R
trunk/rkward/packages/rkwarddev/R/rkwarddev-desc-internal.R
trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R
trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd
Added Paths:
-----------
trunk/rkward/packages/rkwarddev/R/rk.XML.matrix.R
trunk/rkward/packages/rkwarddev/man/rk.XML.matrix.Rd
Modified: trunk/rkward/packages/rkwarddev/ChangeLog
===================================================================
--- trunk/rkward/packages/rkwarddev/ChangeLog 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/ChangeLog 2013-02-09 00:14:44 UTC (rev 4532)
@@ -1,11 +1,12 @@
ChangeLog for package rkwarddev
-changes in version 0.06-2 (2013-02-07)
+changes in version 0.06-2 (2013-02-08)
changed:
- the structure of <about> nodes will change in RKWard 0.6.1, <dependencies> will become
a direct child of <document> or <component>, which explains several changes in this release
- for consistency, from now on <component> is never an empty node
added:
+ - new function rk.XML.matrix()
- new function rk.XML.dependencies()
- new function rk.XML.dependency_check()
- added options "dependencies", "namespace" and "priority" to rk.XML.pluginmap()
Modified: trunk/rkward/packages/rkwarddev/DESCRIPTION
===================================================================
--- trunk/rkward/packages/rkwarddev/DESCRIPTION 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/DESCRIPTION 2013-02-09 00:14:44 UTC (rev 4532)
@@ -4,10 +4,10 @@
Author: m.eik michalke <meik.michalke at hhu.de>
Maintainer: m.eik michalke <meik.michalke at hhu.de>
Depends:
- R (>= 2.9.0),methods,XiMpLe (>= 0.03-17),rkward (>= 0.5.6)
+ R (>= 2.9.0),methods,XiMpLe (>= 0.03-18),rkward (>= 0.5.6)
Enhances: rkward
-Description: Provides functions to create plugin skeletons and XML structures
- for RKWard.
+Description: Provides functions to create plugin skeletons and XML
+ structures for RKWard.
License: GPL (>= 3)
Encoding: UTF-8
LazyLoad: yes
@@ -15,7 +15,7 @@
Authors at R: c(person(given="Meik", family="Michalke",
email="meik.michalke at hhu.de", role=c("aut", "cre")))
Version: 0.06-2
-Date: 2013-02-07
+Date: 2013-02-08
Collate:
'echo.R'
'id.R'
@@ -83,6 +83,7 @@
'rk.XML.input.R'
'rk.XML.insert.R'
'rk.XML.logic.R'
+ 'rk.XML.matrix.R'
'rk.XML.menu.R'
'rk.XML.page.R'
'rk.XML.pluginmap.R'
Modified: trunk/rkward/packages/rkwarddev/NAMESPACE
===================================================================
--- trunk/rkward/packages/rkwarddev/NAMESPACE 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/NAMESPACE 2013-02-09 00:14:44 UTC (rev 4532)
@@ -1,13 +1,40 @@
+exportClasses(rk.JS.arr)
+exportClasses(rk.JS.ite)
+exportClasses(rk.JS.opt)
+exportClasses(rk.JS.var)
+exportClasses(rk.plot.opts)
+exportClasses(rk.plug.comp)
export(echo)
export(id)
export(ite)
+exportMethods(show)
export(qp)
+export(rk.build.plugin)
+export(rk.comment)
export(rk.JS.array)
export(rk.JS.doc)
export(rk.JS.options)
export(rk.JS.saveobj)
export(rk.JS.scan)
export(rk.JS.vars)
+export(rk.paste.JS)
+export(rk.paste.JS.graph)
+export(rk.plotOptions)
+export(rk.plugin.component)
+export(rk.plugin.skeleton)
+export(rk.rkh.caption)
+export(rk.rkh.doc)
+export(rk.rkh.link)
+export(rk.rkh.related)
+export(rk.rkh.scan)
+export(rk.rkh.section)
+export(rk.rkh.setting)
+export(rk.rkh.settings)
+export(rk.rkh.summary)
+export(rk.rkh.technical)
+export(rk.rkh.title)
+export(rk.rkh.usage)
+export(rk.testsuite.doc)
export(rk.XML.about)
export(rk.XML.attribute)
export(rk.XML.browser)
@@ -36,6 +63,7 @@
export(rk.XML.input)
export(rk.XML.insert)
export(rk.XML.logic)
+export(rk.XML.matrix)
export(rk.XML.menu)
export(rk.XML.page)
export(rk.XML.plugin)
@@ -56,32 +84,5 @@
export(rk.XML.varselector)
export(rk.XML.varslot)
export(rk.XML.wizard)
-export(rk.build.plugin)
-export(rk.comment)
-export(rk.paste.JS)
-export(rk.paste.JS.graph)
-export(rk.plotOptions)
-export(rk.plugin.component)
-export(rk.plugin.skeleton)
-export(rk.rkh.caption)
-export(rk.rkh.doc)
-export(rk.rkh.link)
-export(rk.rkh.related)
-export(rk.rkh.scan)
-export(rk.rkh.section)
-export(rk.rkh.setting)
-export(rk.rkh.settings)
-export(rk.rkh.summary)
-export(rk.rkh.technical)
-export(rk.rkh.title)
-export(rk.rkh.usage)
-export(rk.testsuite.doc)
export(tf)
-exportClasses(rk.JS.arr)
-exportClasses(rk.JS.ite)
-exportClasses(rk.JS.opt)
-exportClasses(rk.JS.var)
-exportClasses(rk.plot.opts)
-exportClasses(rk.plug.comp)
-exportMethods(show)
import(methods)
Modified: trunk/rkward/packages/rkwarddev/R/rk-internal.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk-internal.R 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/R/rk-internal.R 2013-02-09 00:14:44 UTC (rev 4532)
@@ -120,11 +120,11 @@
cleaned.tags <- list()
for(this.tag in child.list(single.tags)){
if(is.XiMpLe.node(this.tag)){
- this.tag.name <- getXMLName(this.tag)
- if(this.tag.name %in% relevant.tags & "id" %in% names(getXMLAttrs(this.tag))){
+ this.tag.name <- XMLName(this.tag)
+ if(this.tag.name %in% relevant.tags & "id" %in% names(XMLAttrs(this.tag))){
if(isTRUE(only.checkable) & this.tag.name %in% "frame"){
- if("checkable" %in% names(getXMLAttrs(this.tag))){
- if(identical(getXMLAttrs(this.tag)[["checkable"]], "true")){
+ if("checkable" %in% names(XMLAttrs(this.tag))){
+ if(identical(XMLAttrs(this.tag)[["checkable"]], "true")){
cleaned.tags[length(cleaned.tags)+1] <- this.tag
} else {}
} else {}
@@ -153,8 +153,8 @@
ids <- t(sapply(cleaned.tags, function(this.tag){
if(is.XiMpLe.node(this.tag)){
- this.tag.name <- getXMLName(this.tag)
- this.tag.id <- getXMLAttrs(this.tag)["id"]
+ this.tag.name <- XMLName(this.tag)
+ this.tag.id <- XMLAttrs(this.tag)["id"]
} else {
this.tag.name <- XiMpLe:::XML.tagName(this.tag)
this.tag.id <- XiMpLe:::parseXMLAttr(this.tag)[["id"]]
@@ -220,7 +220,7 @@
if(!is.null(modifiers)){
if(identical(modifiers, "all")){
if(is.XiMpLe.node(XML.var)){
- tag.name <- getXMLName(XML.var)
+ tag.name <- XMLName(XML.var)
} else {
tag.name <- XML.var
}
@@ -231,7 +231,7 @@
}
} else {
if(is.XiMpLe.node(XML.var)){
- modif.tag.name <- getXMLName(XML.var)
+ modif.tag.name <- XMLName(XML.var)
} else {
modif.tag.name <- "all"
}
@@ -312,7 +312,7 @@
XML2person <- function(node, eval=FALSE){
if(is.XiMpLe.node(node)){
# check if this is *really* a about section, otherwise die of boredom
- if(!identical(getXMLName(node), "about")){
+ if(!identical(XMLName(node), "about")){
stop(simpleError("I don't know what this is, but 'about' is not an about section!"))
} else {}
} else {
@@ -327,9 +327,9 @@
return(value)
}
all.authors <- c()
- for (this.child in getXMLChildren(node)){
- if(identical(getXMLName(this.child), "author")){
- attrs <- getXMLAttrs(this.child)
+ for (this.child in XMLChildren(node)){
+ if(identical(XMLName(this.child), "author")){
+ attrs <- XMLAttrs(this.child)
given <- make.vector(attrs[["given"]])
family <- make.vector(attrs[["family"]])
email <- make.vector(attrs[["email"]])
@@ -359,18 +359,18 @@
} else {}
if(is.XiMpLe.node(node)){
# check if this is *really* a about section, otherwise die of boredom
- if(!identical(getXMLName(node), "about")){
+ if(!identical(XMLName(node), "about")){
stop(simpleError("I don't know what this is, but 'about' is not an about section!"))
} else {}
} else {
stop(simpleError("'about' must be a XiMpLe.node, see ?rk.XML.about()!"))
}
- check.deps <- sapply(getXMLChildren(node), function(this.child){identical(getXMLName(this.child), "dependencies")})
+ check.deps <- sapply(XMLChildren(node), function(this.child){identical(XMLName(this.child), "dependencies")})
if(any(check.deps)){
- got.deps <- getXMLChildren(node)[[which(check.deps)]]
+ got.deps <- XMLChildren(node)[[which(check.deps)]]
deps.packages <- list()
# first see if RKWard and R versions are given
- deps.RkR <- getXMLAttrs(got.deps)
+ deps.RkR <- XMLAttrs(got.deps)
deps.RkR.options <- names(deps.RkR)
R.min <- ifelse("R_min_version" %in% deps.RkR.options, paste(">= ", deps.RkR[["R_min_version"]], sep=""), "")
R.max <- ifelse("R_max_version" %in% deps.RkR.options, paste("< ", deps.RkR[["R_max_version"]], sep=""), "")
@@ -384,10 +384,10 @@
if(Rk.version.indices > 0 & identical(mode, "depends")){
deps.packages[[length(deps.packages) + 1]] <- paste("rkward (", Rk.min, ifelse(Rk.version.indices > 1, ", ", ""), Rk.max, ")", sep="")
} else {}
- check.deps.pckg <- sapply(getXMLChildren(got.deps), function(this.child){identical(getXMLName(this.child), "package")})
+ check.deps.pckg <- sapply(XMLChildren(got.deps), function(this.child){identical(XMLName(this.child), "package")})
if(any(check.deps.pckg & ((isTRUE(suggest) & identical(mode, "suggest")) | !isTRUE(suggest)))){
deps.packages[[length(deps.packages) + 1]] <- paste(sapply(which(check.deps.pckg), function(this.pckg){
- this.pckg.dep <- getXMLAttrs(getXMLChildren(got.deps)[[this.pckg]])
+ this.pckg.dep <- XMLAttrs(XMLChildren(got.deps)[[this.pckg]])
pckg.options <- names(this.pckg.dep)
pckg.name <- this.pckg.dep[["name"]]
pckg.min <- ifelse("min" %in% pckg.options, paste(">= ", this.pckg.dep[["min"]], sep=""), "")
@@ -425,7 +425,7 @@
} else {}
if(is.XiMpLe.node(node)){
- node.ID <- getXMLAttrs(node)[["id"]]
+ node.ID <- XMLAttrs(node)[["id"]]
} else if(is.character(node)){
node.ID <- node
} else {
@@ -479,7 +479,7 @@
} else {}
if(is.XiMpLe.node(source)){
- tag.name <- getXMLName(source)
+ tag.name <- XMLName(source)
# embedded plugins can have all sorts of modifiers
if(tag.name %in% c("embed", "external")){
if(isTRUE(bool)){
@@ -575,7 +575,7 @@
this.child <- stripXML(this.child)
if(is.XiMpLe.node(this.child)){
- return(getXMLName(this.child))
+ return(XMLName(this.child))
} else {
stop(simpleError(paste("Invalid object for ", section, " section, must be of class XiMpLe.node, but got class ", class(this.child), "!", sep="")))
}
@@ -605,7 +605,7 @@
# - see: name of the function to check docs for
valid.parent <- function(parent, node, warn=FALSE, see=NULL){
if(is.XiMpLe.node(node)){
- node.name <- getXMLName(node)
+ node.name <- XMLName(node)
if(identical(node.name, parent)){
return(TRUE)
} else {
Added: trunk/rkward/packages/rkwarddev/R/rk.XML.matrix.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk.XML.matrix.R (rev 0)
+++ trunk/rkward/packages/rkwarddev/R/rk.XML.matrix.R 2013-02-09 00:14:44 UTC (rev 4532)
@@ -0,0 +1,108 @@
+#' Create XML "matrix" node for RKWard plugins
+#'
+#' @param label Character string, a label for the matrix.
+#' @param mode Character string, one of "integer", "real" or "string". The type of data that will
+#' be accepted in the table (required)
+#' @param rows Number of rows in the matrix. Has no effect if \code{allow_user_resize_rows=TRUE}.
+#' @param columns Number of columns in the matrix. Has no effect if \code{allow_user_resize_columns=TRUE}.
+#' @param min Minimum acceptable value (if \code{type} is "integer" or "real"). Defaults to the
+#' smallest representable value.
+#' @param max Maximum acceptable value (if \code{type} is "integer" or "real"). Defaults to the
+#' largest representable value.
+#' @param allow_missings Logical, whether missing (empty) values are allowed in the matrix
+#' (if \code{type} is "string").
+#' @param allow_user_resize_columns Logical, if \code{TRUE}, the user can add columns by typing
+#' on the rightmost (inactive) cells.
+#' @param allow_user_resize_rows Logical, if \code{TRUE}, the user can add rows by typing on the
+#' bottommost (inactive) cells.
+#' @param fixed_width Logical, force the GUI element to stay at its initial width. Do not use in
+#' combindation with matrices, where the number of columns may change in any way.
+#' Useful, esp. when creating a vector input element (rows="1").
+#' @param fixed_height Logical, force the GUI element to stay at its initial height. Do not use in
+#' combindation with matrices, where the number of rows may change in any way.
+#' Useful, esp. when creating a vector input element (columns="1").
+#' @param horiz_headers Character vector to use for the horiztonal header. Defaults to column number.
+#' @param vert_headers Character vector to use for the vertical header. Defaults to row number.
+#' @param id.name Character string, a unique ID for this plugin element.
+#' If \code{"auto"}, an ID will be generated automatically from the label.
+#' @return An object of class \code{XiMpLe.node}.
+#' @export
+#' @seealso
+#' and the \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
+#' @examples
+#' test.matrix <- rk.XML.matrix("A matrix")
+
+rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=NULL,
+ allow_missings=FALSE, allow_user_resize_columns=TRUE,
+ allow_user_resize_rows=TRUE, fixed_width=FALSE, fixed_height=FALSE,
+ horiz_headers=NULL, vert_headers=NULL, id.name="auto"){
+ if(identical(id.name, "auto")){
+ # try autogenerating some id
+ id.name <- auto.ids(label, prefix=ID.prefix("matrix"), chars=10)
+ } else if(is.null(id.name)){
+ stop(simpleError("Matrices need an ID!"))
+ } else {}
+ attr.list <- list(id=check.ID(id.name), label=label)
+
+ if(!mode %in% c("integer", "real", "string")){
+ stop(simpleError(paste("Invalid mode: ", mode, sep="")))
+ } else {
+ attr.list[["mode"]] <- mode
+ }
+
+ if(mode %in% c("string")){
+ if(isTRUE(allow_missings)){
+ attr.list[["allow_missings"]] <- "true"
+ } else {}
+ } else {}
+
+ if(mode %in% c("integer", "real")){
+ if(!is.null(min)){
+ attr.list[["min"]] <- min
+ } else {}
+ if(!is.null(max)){
+ attr.list[["max"]] <- max
+ } else {}
+ } else {}
+
+ if(!isTRUE(allow_user_resize_rows)){
+ attr.list[["allow_user_resize_rows"]] <- "false"
+ if(rows != 2){
+ attr.list[["rows"]] <- rows
+ } else {}
+ } else {}
+
+ if(!isTRUE(allow_user_resize_columns)){
+ attr.list[["allow_user_resize_columns"]] <- "false"
+ if(columns != 2){
+ attr.list[["columns"]] <- columns
+ } else {}
+ } else {}
+
+ if(isTRUE(fixed_width)){
+ attr.list[["fixed_width"]] <- "true"
+ } else {}
+ if(isTRUE(fixed_height)){
+ attr.list[["fixed_height"]] <- "true"
+ } else {}
+
+ if(!is.null(horiz_headers)){
+ if(is.character(horiz_headers)){
+ attr.list[["horiz_headers"]] <- paste(horiz_headers, sep=";")
+ } else {
+ stop(simpleError("'horiz_headers' must be a character vector!"))
+ }
+ } else {}
+
+ if(!is.null(vert_headers)){
+ if(is.character(vert_headers)){
+ attr.list[["vert_headers"]] <- paste(vert_headers, sep=";")
+ } else {
+ stop(simpleError("'vert_headers' must be a character vector!"))
+ }
+ } else {}
+
+ node <- XMLNode("matrix", attrs=attr.list)
+
+ return(node)
+}
Modified: trunk/rkward/packages/rkwarddev/R/rkwarddev-desc-internal.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rkwarddev-desc-internal.R 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/R/rkwarddev-desc-internal.R 2013-02-09 00:14:44 UTC (rev 4532)
@@ -10,7 +10,7 @@
role=c(\"aut\", \"cre\")))",
Maintainer="m.eik michalke <meik.michalke at hhu.de>",
## revert to rkward (>= 0.5.7) later...
- Depends="R (>= 2.9.0),methods,XiMpLe (>= 0.03-17),rkward (>= 0.5.6)",
+ Depends="R (>= 2.9.0),methods,XiMpLe (>= 0.03-18),rkward (>= 0.5.6)",
Enhances="rkward",
Description="Provides functions to create plugin skeletons and XML structures for RKWard.",
License="GPL (>= 3)",
Modified: trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R 2013-02-09 00:14:44 UTC (rev 4532)
@@ -4,8 +4,8 @@
#' Package: \tab rkwarddev\cr
#' Type: \tab Package\cr
#' Version: \tab 0.06-2\cr
-#' Date: \tab 2013-02-07\cr
-#' Depends: \tab R (>= 2.9.0),methods,XiMpLe (>= 0.03-17),rkward (>= 0.5.6)\cr
+#' Date: \tab 2013-02-08\cr
+#' Depends: \tab R (>= 2.9.0),methods,XiMpLe (>= 0.03-18),rkward (>= 0.5.6)\cr
#' Enhances: \tab rkward\cr
#' Encoding: \tab UTF-8\cr
#' License: \tab GPL (>= 3)\cr
Added: trunk/rkward/packages/rkwarddev/man/rk.XML.matrix.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/man/rk.XML.matrix.Rd (rev 0)
+++ trunk/rkward/packages/rkwarddev/man/rk.XML.matrix.Rd 2013-02-09 00:14:44 UTC (rev 4532)
@@ -0,0 +1,81 @@
+\name{rk.XML.matrix}
+\alias{rk.XML.matrix}
+\title{Create XML "matrix" node for RKWard plugins}
+\usage{
+ rk.XML.matrix(label, mode = "real", rows = 2,
+ columns = 2, min = NULL, max = NULL,
+ allow_missings = FALSE,
+ allow_user_resize_columns = TRUE,
+ allow_user_resize_rows = TRUE, fixed_width = FALSE,
+ fixed_height = FALSE, horiz_headers = NULL,
+ vert_headers = NULL, id.name = "auto")
+}
+\arguments{
+ \item{label}{Character string, a label for the matrix.}
+
+ \item{mode}{Character string, one of "integer", "real" or
+ "string". The type of data that will be accepted in the
+ table (required)}
+
+ \item{rows}{Number of rows in the matrix. Has no effect
+ if \code{allow_user_resize_rows=TRUE}.}
+
+ \item{columns}{Number of columns in the matrix. Has no
+ effect if \code{allow_user_resize_columns=TRUE}.}
+
+ \item{min}{Minimum acceptable value (if \code{type} is
+ "integer" or "real"). Defaults to the smallest
+ representable value.}
+
+ \item{max}{Maximum acceptable value (if \code{type} is
+ "integer" or "real"). Defaults to the largest
+ representable value.}
+
+ \item{allow_missings}{Logical, whether missing (empty)
+ values are allowed in the matrix (if \code{type} is
+ "string").}
+
+ \item{allow_user_resize_columns}{Logical, if \code{TRUE},
+ the user can add columns by typing on the rightmost
+ (inactive) cells.}
+
+ \item{allow_user_resize_rows}{Logical, if \code{TRUE},
+ the user can add rows by typing on the bottommost
+ (inactive) cells.}
+
+ \item{fixed_width}{Logical, force the GUI element to stay
+ at its initial width. Do not use in combindation with
+ matrices, where the number of columns may change in any
+ way. Useful, esp. when creating a vector input element
+ (rows="1").}
+
+ \item{fixed_height}{Logical, force the GUI element to
+ stay at its initial height. Do not use in combindation
+ with matrices, where the number of rows may change in any
+ way. Useful, esp. when creating a vector input element
+ (columns="1").}
+
+ \item{horiz_headers}{Character vector to use for the
+ horiztonal header. Defaults to column number.}
+
+ \item{vert_headers}{Character vector to use for the
+ vertical header. Defaults to row number.}
+
+ \item{id.name}{Character string, a unique ID for this
+ plugin element. If \code{"auto"}, an ID will be
+ generated automatically from the label.}
+}
+\value{
+ An object of class \code{XiMpLe.node}.
+}
+\description{
+ Create XML "matrix" node for RKWard plugins
+}
+\examples{
+test.matrix <- rk.XML.matrix("A matrix")
+}
+\seealso{
+ and the \href{help:rkwardplugins}{Introduction to Writing
+ Plugins for RKWard}
+}
+
Modified: trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd 2013-02-09 00:11:38 UTC (rev 4531)
+++ trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd 2013-02-09 00:14:44 UTC (rev 4532)
@@ -9,8 +9,8 @@
\details{
\tabular{ll}{ Package: \tab rkwarddev\cr Type: \tab
Package\cr Version: \tab 0.06-2\cr Date: \tab
- 2013-02-07\cr Depends: \tab R (>= 2.9.0),methods,XiMpLe
- (>= 0.03-17),rkward (>= 0.5.6)\cr Enhances: \tab
+ 2013-02-08\cr Depends: \tab R (>= 2.9.0),methods,XiMpLe
+ (>= 0.03-18),rkward (>= 0.5.6)\cr Enhances: \tab
rkward\cr Encoding: \tab UTF-8\cr License: \tab GPL (>=
3)\cr LazyLoad: \tab yes\cr URL: \tab
http://rkward.sourceforge.net\cr }
More information about the rkward-tracker
mailing list