Commit 700d5756 by Eric Coissac

Rename procmod.frame procmod_frame

parent ee0efebb
......@@ -2,37 +2,37 @@
S3method("$",procmod.corls)
S3method("$",procmod.varls)
S3method("$<-",procmod.frame)
S3method("[",procmod.frame)
S3method("[[<-",procmod.frame)
S3method("$<-",procmod_frame)
S3method("[",procmod_frame)
S3method("[[<-",procmod_frame)
S3method(as.data.frame,dist)
S3method(as.list,procmod.frame)
S3method(as.procmod.frame,array)
S3method(as.procmod.frame,list)
S3method(as.procmod.frame,matrix)
S3method(as.procmod.frame,procmod.frame)
S3method(dim,procmod.frame)
S3method(as.list,procmod_frame)
S3method(as.procmod_frame,array)
S3method(as.procmod_frame,list)
S3method(as.procmod_frame,matrix)
S3method(as.procmod_frame,procmod_frame)
S3method(dim,procmod_frame)
S3method(names,procmod.corls)
S3method(names,procmod.varls)
S3method(ortho,data.frame)
S3method(ortho,dist)
S3method(ortho,matrix)
S3method(ortho,procmod.frame)
S3method(ortho,procmod_frame)
S3method(print,procmod.corls)
S3method(print,procmod.varls)
S3method(subset,procmod.frame)
export(as.procmod.frame)
S3method(subset,procmod_frame)
export(as.procmod_frame)
export(bicenter)
export(corls)
export(corls.partial)
export(corls.test)
export(is.euclid)
export(is.procmod.frame)
export(is.procmod_frame)
export(nmds)
export(ortho)
export(pca)
export(pcoa)
export(procmod.frame)
export(procmod_frame)
export(protate)
export(simulate_correlation)
export(simulate_matrix)
......
......@@ -51,7 +51,7 @@ NULL
#' performs a Monte-Carlo Test on the sum of the singular values of a
#' procustean rotation (see \code{\link[ade4]{procuste.rtest}}).
#'
#' @param ... the set of matrices or a \code{\link[ProcMod]{procmod.frame}}
#' @param ... the set of matrices or a \code{\link[ProcMod]{procmod_frame}}
#' object.
#' @param permutations a list of control values for the permutations as returned
#' by the function \code{\link[permute]{how}}, or the number of
......@@ -80,14 +80,14 @@ corls.test <- function(...,
if (length(xs) == 1) {
x <- xs[[1]]
if (is.procmod.frame(x)) {
if (is.procmod_frame(x)) {
xs <- x
} else {
xs <- procmod.frame(x)
xs <- procmod_frame(x)
}
}
else {
xs <- as.procmod.frame(xs)
xs <- as.procmod_frame(xs)
}
x_names <- names(xs)
......@@ -117,7 +117,7 @@ corls.test <- function(...,
replace = FALSE
)
rcov = varls(as.procmod.frame(
rcov = varls(as.procmod_frame(
lapply(
1:nx,
function(j) xs[[j]][pmatrix[ps[j], ], ]
......
......@@ -66,7 +66,7 @@ registerDoParallel(1)
#'
#' The inputs must be numeric matrices or \code{\link[stats]{dist}} object.
#' The set of input matrices can be aggregated un a
#' \code{\link[ProcMod]{procmod.frame}}.
#' \code{\link[ProcMod]{procmod_frame}}.
#'
#' Before computing the coefficients, matrices are projected into an
#' orthogonal space using the \code{\link[ProcMod]{ortho}} function.
......@@ -88,7 +88,7 @@ registerDoParallel(1)
#' \insertRef{Coissac-Eric:19:00}{ProcMod}
#' }
#'
#' @param ... the set of matrices or a \code{\link[ProcMod]{procmod.frame}}
#' @param ... the set of matrices or a \code{\link[ProcMod]{procmod_frame}}
#' object.
#' @param nrand number of randomisation used to estimate the mean
#' covariance observed between two random matrix.
......@@ -131,7 +131,7 @@ registerDoParallel(1)
#' # compute the variance covariance matrix
#' varls(A, B, C)
#' varls(A = A, B = B, C = C)
#' data = procmod.frame(A = A, B = B, C = C)
#' data = procmod_frame(A = A, B = B, C = C)
#' varls(data)
#'
#' @author Eric Coissac
......@@ -158,14 +158,14 @@ varls <- function(...,
if (length(xs) == 1) {
x <- xs[[1]]
if (is.procmod.frame(x)) {
if (is.procmod_frame(x)) {
xs <- x
} else {
xs <- procmod.frame(x)
xs <- procmod_frame(x)
}
}
else {
xs <- as.procmod.frame(xs)
xs <- as.procmod_frame(xs)
}
x_names <- names(xs)
......
......@@ -230,7 +230,7 @@ is.euclid <- function(distances, tol = 1e-07) {
}
is.orthogonal <- function(x) {
stopifnot(is.procmod.frame(x))
stopifnot(is.procmod_frame(x))
!is.null(attr(x, "projected"))
}
......@@ -295,7 +295,7 @@ ortho.data.frame <- function(data, scale = FALSE, ...) {
#' @rdname ortho
#' @export
ortho.procmod.frame <- function(data, ...) {
ortho.procmod_frame <- function(data, ...) {
if (is.orthogonal(data)) {
return(data)
}
......
......@@ -48,7 +48,7 @@ NULL
#' @param nrows an interger value specifying the number of row
#' of the returned matrix
#' @param contrasts see the \code{contrasts.arg} argument
#' of the \code{\link[ProcMod]{procmod.frame}}
#' of the \code{\link[ProcMod]{procmod_frame}}
#' constructor.
#'
#' @return a new numeric matrix with correct size.
......@@ -166,20 +166,20 @@ NULL
}
#' The procmod.frame data structure.
#' The procmod_frame data structure.
#'
#' A \code{procmod.frame} can be considered as the analog of a
#' \code{data.frame} for vector data. In a \code{procmod.frame}
#' A \code{procmod_frame} can be considered as the analog of a
#' \code{data.frame} for vector data. In a \code{procmod_frame}
#' each element, equivalent to a column in a \code{data.frame}
#' is a numeric matrix or a distance matrix object (\code{dist}).
#' Every element must describe the same number of individuals.
#' Therefore every numeric matrix must have the same number of row
#' (\code{nrow}) and every distance matrix must have the same size
#' (\code{attr(d,"Size")}). A \code{procmod.frame} can simultaneously
#' (\code{attr(d,"Size")}). A \code{procmod_frame} can simultaneously
#' contain both types of data, numeric and distance matrix.
#'
#' @param ... a set of objects to aggregate into a
#' \code{procmod.frame}. These objects can be
#' \code{procmod_frame}. These objects can be
#' numeric matrices, or dist objects. Every objects
#' must have the same number of row.
#'
......@@ -188,12 +188,12 @@ NULL
#'
#' @param check.rows a logical value. When set to \code{TRUE}, its
#' default value, the number of row of every elements of the
#' \code{procmod.frame} are tested for equality. Otherwise no
#' \code{procmod_frame} are tested for equality. Otherwise no
#' check is done.
#'
#' @param reorder.rows a logical value. When set to \code{TRUE}, its
#' default value, every elements of the
#' \code{procmod.frame} are reordered according to the \code{row.names}
#' \code{procmod_frame} are reordered according to the \code{row.names}
#' order. Otherwise nothing is done.
#'
#' @param contrasts.arg A list, whose entries are values
......@@ -202,7 +202,7 @@ NULL
#' replacement function and whose names are the names
#' of columns of data containing factors.
#'
#' @return a \code{procmod.frame} instance.
#' @return a \code{procmod_frame} instance.
#'
#' @examples
#' library(vegan)
......@@ -210,7 +210,7 @@ NULL
#' data(eukaryotes)
#' data(soil)
#'
#' dataset <- procmod.frame(euk = vegdist(decostand(eukaryotes,
#' dataset <- procmod_frame(euk = vegdist(decostand(eukaryotes,
#' method = "hellinger"),
#' method = "euclidean"),
#' bac = vegdist(decostand(bacteria,
......@@ -227,7 +227,7 @@ NULL
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
procmod.frame <- function(...,
procmod_frame <- function(...,
row.names = NULL,
check.rows = TRUE,
reorder.rows = TRUE,
......@@ -297,7 +297,7 @@ procmod.frame <- function(...,
.siteNames(value[[i]]) <- NULL
}
make_subS3Class(value, "procmod.frame")
make_subS3Class(value, "procmod_frame")
}
#'
......@@ -306,14 +306,14 @@ procmod.frame <- function(...,
#' @param x a R \code{object to test}
#'
#' @return a \code{logical} value equals to
#' \code{TRUE} if \code{x} is a \code{procmod.frame},
#' \code{TRUE} if \code{x} is a \code{procmod_frame},
#' \code{FALSE} otherwise.
#'
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
is.procmod.frame <- function(x) {
inherits(x, "procmod.frame")
is.procmod_frame <- function(x) {
inherits(x, "procmod_frame")
}
#'
......@@ -325,31 +325,31 @@ is.procmod.frame <- function(x) {
#' @param data a R object to coerce.
#' @param ... supplementary parameters used in some
#' implementation of that method
#' @return a \code{procmod.frame} object
#' @return a \code{procmod_frame} object
#'
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
as.procmod.frame <- function(data, ...) {
UseMethod("as.procmod.frame", data)
as.procmod_frame <- function(data, ...) {
UseMethod("as.procmod_frame", data)
}
#' @rdname as.procmod.frame
#' @rdname as.procmod_frame
#' @export
as.procmod.frame.list <- function(data, ...) {
as.procmod_frame.list <- function(data, ...) {
data <- c(data, list(...))
do.call(procmod.frame, data)
do.call(procmod_frame, data)
}
#' @rdname as.procmod.frame
#' @rdname as.procmod_frame
#' @export
as.procmod.frame.procmod.frame <- function(data, ...) {
as.procmod_frame.procmod_frame <- function(data, ...) {
data
}
#' @rdname as.procmod.frame
#' @rdname as.procmod_frame
#' @export
as.procmod.frame.array <- function(data, ...) {
as.procmod_frame.array <- function(data, ...) {
di <- dim(data)
stopifnot(length(di) == 3)
......@@ -364,18 +364,18 @@ as.procmod.frame.array <- function(data, ...) {
data <- c(l, list(...))
do.call(procmod.frame, l)
do.call(procmod_frame, l)
}
# #' @rdname procmod.frame
# #' @rdname procmod_frame
# #' @export
# as.procmod.frame.pm <- function(data, ...) {
# as.procmod_frame.pm <- function(data, ...) {
# vars.procmod(terms(data), data$model)
# }
#' @rdname as.procmod.frame
#' @rdname as.procmod_frame
#' @export
as.procmod.frame.matrix <- function(data, ...) {
as.procmod_frame.matrix <- function(data, ...) {
l <- vector(mode = "list", length = ncol(data))
for (i in seq_len(ncol(data))) {
l[[i]] <- data[, i]
......@@ -385,24 +385,24 @@ as.procmod.frame.matrix <- function(data, ...) {
names(l) <- colnames(data)
}
as.procmod.frame(l)
as.procmod_frame(l)
}
#' Dimensions of a ProcMod Frame.
#'
#' @param x a \code{\link[ProcMod]{procmod.frame}}
#' @param x a \code{\link[ProcMod]{procmod_frame}}
#' object
#'
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
dim.procmod.frame <- function(x)
dim.procmod_frame <- function(x)
return(c(.siteCount(x[[1]]), length(x)))
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
`[[<-.procmod.frame` <- function(x, i, value) {
`[[<-.procmod_frame` <- function(x, i, value) {
cl <- class(x)
nrows <- .siteCount(x)
class(x) <- "list"
......@@ -447,7 +447,7 @@ dim.procmod.frame <- function(x)
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
`$<-.procmod.frame` <- function(x, name, value) {
`$<-.procmod_frame` <- function(x, name, value) {
x[[name]] <- value
x
......@@ -456,7 +456,7 @@ dim.procmod.frame <- function(x)
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
`[.procmod.frame` <- function(x, i, j,
`[.procmod_frame` <- function(x, i, j,
drop = TRUE) {
has.j <- !missing(j)
has.i <- !missing(i)
......@@ -497,7 +497,7 @@ dim.procmod.frame <- function(x)
if (drop && length(y) == 1L) {
y <- y[[1]]
} else {
y <- make_subS3Class(y, "procmod.frame")
y <- make_subS3Class(y, "procmod_frame")
attr(y, "row.names") <- rownames(y[[1]])
}
......@@ -507,7 +507,7 @@ dim.procmod.frame <- function(x)
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
subset.procmod.frame <- function(x, subset, select, drop = FALSE, ...) {
subset.procmod_frame <- function(x, subset, select, drop = FALSE, ...) {
r <- if (missing(subset)) {
rep_len(TRUE, nrow(x))
} else {
......@@ -531,7 +531,7 @@ subset.procmod.frame <- function(x, subset, select, drop = FALSE, ...) {
#' @author Eric Coissac
#' @author Christelle Gonindard-Melodelima
#' @export
as.list.procmod.frame <- function(x, ...) {
as.list.procmod_frame <- function(x, ...) {
class(x) <- "list"
x
......
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/procmod_frame.R
\name{as.procmod.frame}
\alias{as.procmod.frame}
\alias{as.procmod.frame.list}
\alias{as.procmod.frame.procmod.frame}
\alias{as.procmod.frame.array}
\alias{as.procmod.frame.matrix}
\name{as.procmod_frame}
\alias{as.procmod_frame}
\alias{as.procmod_frame.list}
\alias{as.procmod_frame.procmod_frame}
\alias{as.procmod_frame.array}
\alias{as.procmod_frame.matrix}
\title{Coerce to a ProcMod Frame.}
\usage{
as.procmod.frame(data, ...)
as.procmod_frame(data, ...)
\method{as.procmod.frame}{list}(data, ...)
\method{as.procmod_frame}{list}(data, ...)
\method{as.procmod.frame}{procmod.frame}(data, ...)
\method{as.procmod_frame}{procmod_frame}(data, ...)
\method{as.procmod.frame}{array}(data, ...)
\method{as.procmod_frame}{array}(data, ...)
\method{as.procmod.frame}{matrix}(data, ...)
\method{as.procmod_frame}{matrix}(data, ...)
}
\arguments{
\item{data}{a R object to coerce.}
......@@ -25,7 +25,7 @@ as.procmod.frame(data, ...)
implementation of that method}
}
\value{
a \code{procmod.frame} object
a \code{procmod_frame} object
}
\description{
Conversion methods are proposed for \code{list},
......
......@@ -8,7 +8,7 @@ corls.test(..., permutations = permute::how(nperm = 999),
p.adjust.method = "holm")
}
\arguments{
\item{...}{the set of matrices or a \code{\link[ProcMod]{procmod.frame}}
\item{...}{the set of matrices or a \code{\link[ProcMod]{procmod_frame}}
object.}
\item{permutations}{a list of control values for the permutations as returned
......
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/procmod_frame.R
\name{dim.procmod.frame}
\alias{dim.procmod.frame}
\name{dim.procmod_frame}
\alias{dim.procmod_frame}
\title{Dimensions of a ProcMod Frame.}
\usage{
\method{dim}{procmod.frame}(x)
\method{dim}{procmod_frame}(x)
}
\arguments{
\item{x}{a \code{\link[ProcMod]{procmod.frame}}
\item{x}{a \code{\link[ProcMod]{procmod_frame}}
object}
}
\description{
......
......@@ -13,7 +13,7 @@
of the returned matrix}
\item{contrasts}{see the \code{contrasts.arg} argument
of the \code{\link[ProcMod]{procmod.frame}}
of the \code{\link[ProcMod]{procmod_frame}}
constructor.}
}
\value{
......
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/procmod_frame.R
\name{is.procmod.frame}
\alias{is.procmod.frame}
\name{is.procmod_frame}
\alias{is.procmod_frame}
\title{Check if an object is a ProcMod Frame.}
\usage{
is.procmod.frame(x)
is.procmod_frame(x)
}
\arguments{
\item{x}{a R \code{object to test}}
}
\value{
a \code{logical} value equals to
\code{TRUE} if \code{x} is a \code{procmod.frame},
\code{TRUE} if \code{x} is a \code{procmod_frame},
\code{FALSE} otherwise.
}
\description{
......
......@@ -5,7 +5,7 @@
\alias{ortho.dist}
\alias{ortho.matrix}
\alias{ortho.data.frame}
\alias{ortho.procmod.frame}
\alias{ortho.procmod_frame}
\title{Project a dataset in a euclidean space.}
\usage{
ortho(data, ...)
......@@ -16,7 +16,7 @@ ortho(data, ...)
\method{ortho}{data.frame}(data, scale = FALSE, ...)
\method{ortho}{procmod.frame}(data, ...)
\method{ortho}{procmod_frame}(data, ...)
}
\arguments{
\item{data}{a numeric matrix describing the points}
......
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/procmod_frame.R
\name{procmod.frame}
\alias{procmod.frame}
\title{The procmod.frame data structure.}
\name{procmod_frame}
\alias{procmod_frame}
\title{The procmod_frame data structure.}
\usage{
procmod.frame(..., row.names = NULL, check.rows = TRUE,
procmod_frame(..., row.names = NULL, check.rows = TRUE,
reorder.rows = TRUE, contrasts.arg = NULL)
}
\arguments{
\item{...}{a set of objects to aggregate into a
\code{procmod.frame}. These objects can be
\code{procmod_frame}. These objects can be
numeric matrices, or dist objects. Every objects
must have the same number of row.}
......@@ -18,12 +18,12 @@ to each row.}
\item{check.rows}{a logical value. When set to \code{TRUE}, its
default value, the number of row of every elements of the
\code{procmod.frame} are tested for equality. Otherwise no
\code{procmod_frame} are tested for equality. Otherwise no
check is done.}
\item{reorder.rows}{a logical value. When set to \code{TRUE}, its
default value, every elements of the
\code{procmod.frame} are reordered according to the \code{row.names}
\code{procmod_frame} are reordered according to the \code{row.names}
order. Otherwise nothing is done.}
\item{contrasts.arg}{A list, whose entries are values
......@@ -33,17 +33,17 @@ replacement function and whose names are the names
of columns of data containing factors.}
}
\value{
a \code{procmod.frame} instance.
a \code{procmod_frame} instance.
}
\description{
A \code{procmod.frame} can be considered as the analog of a
\code{data.frame} for vector data. In a \code{procmod.frame}
A \code{procmod_frame} can be considered as the analog of a
\code{data.frame} for vector data. In a \code{procmod_frame}
each element, equivalent to a column in a \code{data.frame}
is a numeric matrix or a distance matrix object (\code{dist}).
Every element must describe the same number of individuals.
Therefore every numeric matrix must have the same number of row
(\code{nrow}) and every distance matrix must have the same size
(\code{attr(d,"Size")}). A \code{procmod.frame} can simultaneously
(\code{attr(d,"Size")}). A \code{procmod_frame} can simultaneously
contain both types of data, numeric and distance matrix.
}
\examples{
......@@ -52,7 +52,7 @@ data(bacteria)
data(eukaryotes)
data(soil)
dataset <- procmod.frame(euk = vegdist(decostand(eukaryotes,
dataset <- procmod_frame(euk = vegdist(decostand(eukaryotes,
method = "hellinger"),
method = "euclidean"),
bac = vegdist(decostand(bacteria,
......
......@@ -13,7 +13,7 @@ corls(..., nrand = 100, p.adjust.method = "holm")
corls.partial(..., nrand = 100)
}
\arguments{
\item{...}{the set of matrices or a \code{\link[ProcMod]{procmod.frame}}
\item{...}{the set of matrices or a \code{\link[ProcMod]{procmod_frame}}
object.}
\item{nrand}{number of randomisation used to estimate the mean
......@@ -69,7 +69,7 @@ by a normalisation by the diagonal of the inverted matrix.
The inputs must be numeric matrices or \code{\link[stats]{dist}} object.
The set of input matrices can be aggregated un a
\code{\link[ProcMod]{procmod.frame}}.
\code{\link[ProcMod]{procmod_frame}}.
Before computing the coefficients, matrices are projected into an
orthogonal space using the \code{\link[ProcMod]{ortho}} function.
......@@ -91,7 +91,7 @@ C <- matrix(20:31, nrow = 3)
# compute the variance covariance matrix
varls(A, B, C)
varls(A = A, B = B, C = C)
data = procmod.frame(A = A, B = B, C = C)
data = procmod_frame(A = A, B = B, C = C)
varls(data)
}
......
......@@ -22,3 +22,6 @@ doParallel
ggplotify
futile.logger
VennDiagram
permute
lattice
vegan
......@@ -708,7 +708,7 @@ if (compute) {
r2 = r2_CD,
equal.var = TRUE)
partial.data = procmod.frame(A=A,B=B,C=C,D=D)
partial.data = procmod_frame(A=A,B=B,C=C,D=D)
partial_r2_sims[k, , ,1] <- corls.partial(partial.data,nrand = n_rand)
partial_r2_sims[k, , ,2] <- corls.partial(partial.data,nrand = 0)
......@@ -925,22 +925,6 @@ power <- apply(h1_sims < alpha,
FUN = mean)
@
<<empirical_data_set, message=FALSE, warning=FALSE, include=FALSE>>=
data("MicroCurvulatum")
mc <- procmod.frame(bacteria = vegdist(decostand(MicroCurvulatum$bacteria,
method = "hellinger"),
method = "euclidean"),
fungi = vegdist(decostand(MicroCurvulatum$fungi,
method = "hellinger"),
method = "euclidean"),
plants = vegdist(MicroCurvulatum$plants > 0,
method = "jaccard"),
soil = scale(MicroCurvulatum$soil,
center=TRUE,
scale=TRUE))
@
\vspace*{1pt}
\end{methods}
......
No preview for this file type
......@@ -357,7 +357,6 @@ To evaluate relative the power of the three considered tests, pairs of to random
\vspace*{1pt}
\end{methods}
......@@ -374,7 +373,7 @@ To evaluate relative the power of the three considered tests, pairs of to random
\begin{table}[!t]
\processtable{Estimation of $\overline{\rcovls(\X,\Y)}$ according to the number of random matrices (k) aligned.\label{tab:mrcovls}}{
% latex table generated in R 3.5.2 by xtable 1.8-4 package
% Thu Sep 26 17:36:27 2019
% Tue Oct 1 08:44:51 2019
\begin{tabular}{rrrrrrr}
\hline
& & \multicolumn{2}{c}{normal} & & \multicolumn{2}{c}{exponential}\\ \cline{3-4} \cline{6-7}p & k &\multicolumn{1}{c}{mean} & \multicolumn{1}{c}{sd} & \multicolumn{1}{c}{ } &\multicolumn{1}{c}{mean} & \multicolumn{1}{c}{sd}\\\hline\multirow{3}{*}{10} & 10 & 0.5746 & $1.3687 \times 10^{-2}$ & & 0.5705 & $1.1714 \times 10^{-2}$ \\
......@@ -476,7 +475,7 @@ whatever the $p$ tested (Table~\ref{tab:alpha_pvalue}). This ensure that the pro
of the distribution of $P_{values}$ correlation test to $\mathcal{U}(0,1)$
under the null hypothesis.\label{tab:alpha_pvalue}} {
% latex table generated in R 3.5.2 by xtable 1.8-4 package
% Thu Sep 26 17:36:30 2019
% Tue Oct 1 08:44:54 2019
\begin{tabular*}{0.98\linewidth}{@{\extracolsep{\fill}}crrr}
\hline
& \multicolumn{3}{c}{Cramer-Von Mises p.value} \\
......@@ -498,7 +497,7 @@ Power of the $CovLs$ test based on the estimation of $\overline{RCovLs(X,Y)}$ is
\begin{table}[!t]
\processtable{Power estimation of the procruste tests for two low level of shared variations $5\%$ and $10\%$.\label{tab:power}} {
% latex table generated in R 3.5.2 by xtable 1.8-4 package
% Thu Sep 26 17:36:30 2019
% Tue Oct 1 08:44:54 2019
\begin{tabular}{lcrrrrrrrrr}
\hline
& $R^2$ & \multicolumn{4}{c}{5\%} & &\multicolumn{4}{c}{10\%} \\
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment