ropensci / software-review

rOpenSci Software Peer Review.
291 stars 104 forks source link

ILSM: Analyze Interconnection Structure of Multilayer Interaction Networks #661

Open WeichengSun opened 5 days ago

WeichengSun commented 5 days ago

Submitting Author Name: Weicheng Sun Submitting Author Github Handle: !--author1-->@WeichengSun<!--end-author1-- Other Package Authors Github handles: (comma separated, delete if none) Repository: https://github.com/WeichengSun/ILSM Version submitted: 1.0.3.2 Submission type: Standard Editor: TBD Reviewers: TBD

Archive: TBD Version accepted: TBD Language: en


Package: ILSM
Title: Analyze Interconnection Structure of Multilayer Interaction Networks
Version: 1.0.3.2
Authors@R: c(
    person("Weicheng", "Sun", , "sunwch2023@lzu.edu.cn", role = c("aut", "cre")),
    person("Chuan", "Yan", , "yanchuan@lzu.edu.cn", role = c("aut")),
    person("Yangyang", "Zhao", , "120220907711@lzu.edu.cn", role = c("aut")))
Description: 
    In view of the analysis of the structural characteristics of the multilayer 
    network has been complete, however, there is still a lack of a unified 
    operation that can quickly obtain the corresponding characteristics of the 
    multilayer network. 
    To solve this insufficiency, 'ILSM' was designed for supporting calculating 
    such metrics of multilayer networks by functions of this R package.
License: MIT + file LICENSE
URL: https://github.com/WeichengSun/ILSM
BugReports: https://github.com/WeichengSun/ILSM/issues
Encoding: UTF-8
Roxygen: list (markdown = TRUE, roclets = c ("namespace", "rd", "srr::srr_stats_roclet"))
RoxygenNote: 7.3.1
Depends: R (>= 3.5.0)
Imports: 
    stats,
    Matrix,
    igraph
Suggests: 
    knitr,
    rmarkdown,
    testthat (>= 3.0.0)
VignetteBuilder: knitr
Config/testthat/edition: 3

Scope

This package that wrap professional programs used for multilayer interaction network research. These programs must be specific to interconnection structure. It focuses on interacnnection motif for handling matrices or 'igraph'data.

In community ecology, ecological network is used to represent the complex ecological interaction system. Therefore, researchers in this field often pay attention to the work from the network perspective. Therefore, this package is based on the multilayer ecological network to study the interconnection structure, hoping to provide convenience for the mentioned audience.

There is an R package(bmotif) that does similar work in the field of ecological networks, but the program provided by it is only used to study the structure of bipartite networks and is relatively simple, while the new package only studies the structure of multilayer interacting networks, which is more complex.

n/a

#654

Because we have submitted the package ILSM to CRAN ahead of time, the package name is duplicated and the pkgcheck items result is not available.

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

MEE Options - [x] The package is novel and will be of interest to the broad readership of the journal. - [x] The manuscript describing the package is no longer than 3000 words. - [ ] You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see [MEE's Policy on Publishing Code](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/journal-resources/policy-on-publishing-code.html)) - (*Scope: Do consider MEE's [Aims and Scope](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/aims-and-scope/read-full-aims-and-scope.html) for your manuscript. We make no guarantee that your manuscript will be within MEE scope.*) - (*Although not required, we strongly recommend having a full manuscript prepared when you submit here.*) - (*Please do not submit your package separately to Methods in Ecology and Evolution*)

Code of conduct

ropensci-review-bot commented 5 days ago

Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

ropensci-review-bot commented 5 days ago

:rocket:

Editor check started

:wave:

ropensci-review-bot commented 5 days ago

Checks for ILSM (v1.0.3.2)

git hash: 262b9217

Important: All failing checks above must be addressed prior to proceeding

(Checks marked with :eyes: may be optionally addressed.)

Package License: MIT + file LICENSE


1. rOpenSci Statistical Standards (srr package)

:heavy_check_mark: All applicable standards [v0.2.0] have been documented in this package (46 complied with; 27 N/A standards)


2. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate. |type |package | ncalls| |:----------|:---------|------:| |internal |base | 678| |internal |ILSM | 161| |imports |igraph | 62| |imports |Matrix | 13| |imports |stats | 3| |suggests |knitr | NA| |suggests |rmarkdown | NA| |suggests |testthat | NA| |linking_to |NA | NA| Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats()', and examining the 'external_calls' table.

base

c (102), matrix (70), sum (59), return (40), rownames (35), data.frame (34), rep (33), t (31), ncol (28), rowSums (28), length (26), colSums (24), for (16), list (15), as.matrix (14), apply (13), message (12), nrow (12), paste (12), unique (11), lapply (9), as.numeric (7), colnames (5), T (4), which (4), rbind (3), abs (2), drop (2), if (2), mean (2), round (2), sample (2), tcrossprod (2), unlist (2), eigen (1), F (1), Im (1), is.na (1), kronecker (1), max (1), min (1), mode (1), names (1), order (1), Re (1), replace (1), solve (1), sqrt (1), which.max (1)

ILSM

Two (42), Three (15), mEdges (10), Four (7), GetLargestEigenv_r (6), sumR_r (6), adject_net (5), GetMultiClosenessCentrality_r (5), GetMultiEigenvectorCentrality_r (5), GetMultiHubCentrality_r (5), GetMultiKatzCentrality_r (5), GetMultiPageRankCentrality_r (5), Kendall_cor (5), GetMultiAuthCentrality_r (4), emptyR (3), me_interlayer (3), vaznullR (3), BuildSupraAdjacencyMatrixFromExtendedEdgelist_r (2), BuildSupraTransitionMatrixFromSupraAdjacencyMatrix_r (2), edgelist_from_matrices (2), GetMultiPathStatistics_r (2), role_sim (2), SupraAdjacencyToBlockTensor_r (2), build_net (1), coid (1), cois (1), diagR_r (1), GetMultiRWCentrality_r (1), hc (1), icmotif_count (1), icmotif_role (1), igraph_from_matrices (1), Multi_motif (1), node_cv (1), null_model (1), pc (1), poc (1), SavueR (1)

igraph

V (49), graph_from_adjacency_matrix (8), distances (2), layout_with_sugiyama (2), get.edgelist (1)

Matrix

t (5), Matrix (3), sparseMatrix (3), Diagonal (2)

stats

C (1), lm (1), offset (1)


3. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has: - code in R (100% in 22 files) and - 3 authors - 1 vignette - 1 internal data file - 3 imported packages - 13 exported functions (median 60 lines of code) - 65 non-exported functions in R (median 19 lines of code) --- Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used: - `loc` = "Lines of Code" - `fn` = "function" - `exp`/`not_exp` = exported / not exported All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by [the `checks_to_markdown()` function](https://docs.ropensci.org/pkgcheck/reference/checks_to_markdown.html) The final measure (`fn_call_network_size`) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile. |measure | value| percentile|noteworthy | |:------------------------|-----:|----------:|:----------| |files_R | 22| 82.4| | |files_vignettes | 1| 62.0| | |files_tests | 12| 90.0| | |loc_R | 2281| 84.5| | |loc_vignettes | 40| 6.0| | |loc_tests | 441| 68.9| | |num_vignettes | 1| 59.0| | |data_size_total | 5642| 66.4| | |data_size_median | 5642| 74.6| | |n_fns_r | 78| 68.2| | |n_fns_r_exported | 13| 53.7| | |n_fns_r_not_exported | 65| 72.4| | |n_fns_per_file_r | 2| 38.5| | |num_params_per_fn | 2| 8.2| | |loc_per_fn_r | 24| 69.6| | |loc_per_fn_r_exp | 60| 83.8| | |loc_per_fn_r_not_exp | 19| 60.9| | |rel_whitespace_R | 8| 66.6| | |rel_whitespace_vignettes | 22| 5.4| | |rel_whitespace_tests | 12| 57.1| | |doclines_per_fn_exp | 81| 84.5| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 115| 80.3| | ---

3a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


4. goodpractice and other checks

Details of goodpractice checks (click to open)

#### 3a. Continuous Integration Badges [![R-CMD-check.yaml](https://github.com/WeichengSun/ILSM/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/WeichengSun/ILSM/actions) **GitHub Workflow Results** | id|name |conclusion |sha | run_number|date | |-----------:|:------------------|:----------|:------|----------:|:----------| | 11073028649|pkgcheck |failure |262b92 | 9|2024-09-27 | | 11073028622|pkgdown.yaml |success |262b92 | 18|2024-09-27 | | 11073028626|R-CMD-check.yaml |success |262b92 | 17|2024-09-27 | | 11073028621|test-coverage.yaml |success |262b92 | 17|2024-09-27 | --- #### 3b. `goodpractice` results #### `R CMD check` with [rcmdcheck](https://r-lib.github.io/rcmdcheck/) R CMD check generated the following check_fails: 1. cyclocomp 2. no_import_package_as_a_whole #### Test coverage with [covr](https://covr.r-lib.org/) Package coverage: 82.45 #### Cyclocomplexity with [cyclocomp](https://github.com/MangoTheCat/cyclocomp) The following functions have cyclocomplexity >= 15: function | cyclocomplexity --- | --- Multi_motif | 99 icmotif_role | 59 cois | 25 node_cv | 21 Kendall_cor | 18 coid | 17 icmotif_count | 17 #### Static code analyses with [lintr](https://github.com/jimhester/lintr) [lintr](https://github.com/jimhester/lintr) found the following 487 potential issues: message | number of times --- | --- Avoid 1:length(...) expressions, use seq_len. | 2 Avoid 1:ncol(...) expressions, use seq_len. | 5 Avoid 1:NCOL(...) expressions, use seq_len. | 2 Avoid 1:nrow(...) expressions, use seq_len. | 22 Avoid 1:NROW(...) expressions, use seq_len. | 2 Avoid library() and require() calls in packages | 2 Lines should not be more than 80 characters. This line is 100 characters. | 7 Lines should not be more than 80 characters. This line is 102 characters. | 12 Lines should not be more than 80 characters. This line is 103 characters. | 2 Lines should not be more than 80 characters. This line is 104 characters. | 10 Lines should not be more than 80 characters. This line is 105 characters. | 4 Lines should not be more than 80 characters. This line is 106 characters. | 1 Lines should not be more than 80 characters. This line is 107 characters. | 2 Lines should not be more than 80 characters. This line is 108 characters. | 1 Lines should not be more than 80 characters. This line is 109 characters. | 6 Lines should not be more than 80 characters. This line is 110 characters. | 9 Lines should not be more than 80 characters. This line is 111 characters. | 6 Lines should not be more than 80 characters. This line is 112 characters. | 1 Lines should not be more than 80 characters. This line is 113 characters. | 2 Lines should not be more than 80 characters. This line is 114 characters. | 4 Lines should not be more than 80 characters. This line is 115 characters. | 1 Lines should not be more than 80 characters. This line is 116 characters. | 3 Lines should not be more than 80 characters. This line is 117 characters. | 4 Lines should not be more than 80 characters. This line is 118 characters. | 3 Lines should not be more than 80 characters. This line is 119 characters. | 2 Lines should not be more than 80 characters. This line is 120 characters. | 1 Lines should not be more than 80 characters. This line is 121 characters. | 2 Lines should not be more than 80 characters. This line is 122 characters. | 3 Lines should not be more than 80 characters. This line is 123 characters. | 1 Lines should not be more than 80 characters. This line is 124 characters. | 7 Lines should not be more than 80 characters. This line is 125 characters. | 5 Lines should not be more than 80 characters. This line is 126 characters. | 5 Lines should not be more than 80 characters. This line is 127 characters. | 5 Lines should not be more than 80 characters. This line is 128 characters. | 5 Lines should not be more than 80 characters. This line is 129 characters. | 7 Lines should not be more than 80 characters. This line is 130 characters. | 16 Lines should not be more than 80 characters. This line is 131 characters. | 2 Lines should not be more than 80 characters. This line is 132 characters. | 4 Lines should not be more than 80 characters. This line is 133 characters. | 2 Lines should not be more than 80 characters. This line is 134 characters. | 1 Lines should not be more than 80 characters. This line is 139 characters. | 9 Lines should not be more than 80 characters. This line is 143 characters. | 2 Lines should not be more than 80 characters. This line is 144 characters. | 8 Lines should not be more than 80 characters. This line is 148 characters. | 3 Lines should not be more than 80 characters. This line is 149 characters. | 2 Lines should not be more than 80 characters. This line is 153 characters. | 1 Lines should not be more than 80 characters. This line is 154 characters. | 2 Lines should not be more than 80 characters. This line is 155 characters. | 2 Lines should not be more than 80 characters. This line is 157 characters. | 2 Lines should not be more than 80 characters. This line is 162 characters. | 1 Lines should not be more than 80 characters. This line is 163 characters. | 1 Lines should not be more than 80 characters. This line is 168 characters. | 3 Lines should not be more than 80 characters. This line is 170 characters. | 2 Lines should not be more than 80 characters. This line is 171 characters. | 12 Lines should not be more than 80 characters. This line is 174 characters. | 1 Lines should not be more than 80 characters. This line is 178 characters. | 4 Lines should not be more than 80 characters. This line is 179 characters. | 1 Lines should not be more than 80 characters. This line is 180 characters. | 2 Lines should not be more than 80 characters. This line is 181 characters. | 1 Lines should not be more than 80 characters. This line is 182 characters. | 1 Lines should not be more than 80 characters. This line is 185 characters. | 3 Lines should not be more than 80 characters. This line is 187 characters. | 8 Lines should not be more than 80 characters. This line is 188 characters. | 1 Lines should not be more than 80 characters. This line is 194 characters. | 3 Lines should not be more than 80 characters. This line is 197 characters. | 2 Lines should not be more than 80 characters. This line is 198 characters. | 1 Lines should not be more than 80 characters. This line is 203 characters. | 6 Lines should not be more than 80 characters. This line is 205 characters. | 1 Lines should not be more than 80 characters. This line is 207 characters. | 1 Lines should not be more than 80 characters. This line is 208 characters. | 1 Lines should not be more than 80 characters. This line is 218 characters. | 1 Lines should not be more than 80 characters. This line is 221 characters. | 6 Lines should not be more than 80 characters. This line is 224 characters. | 1 Lines should not be more than 80 characters. This line is 227 characters. | 1 Lines should not be more than 80 characters. This line is 228 characters. | 1 Lines should not be more than 80 characters. This line is 229 characters. | 2 Lines should not be more than 80 characters. This line is 251 characters. | 2 Lines should not be more than 80 characters. This line is 255 characters. | 9 Lines should not be more than 80 characters. This line is 256 characters. | 8 Lines should not be more than 80 characters. This line is 257 characters. | 1 Lines should not be more than 80 characters. This line is 304 characters. | 8 Lines should not be more than 80 characters. This line is 81 characters. | 2 Lines should not be more than 80 characters. This line is 82 characters. | 3 Lines should not be more than 80 characters. This line is 83 characters. | 12 Lines should not be more than 80 characters. This line is 84 characters. | 16 Lines should not be more than 80 characters. This line is 85 characters. | 11 Lines should not be more than 80 characters. This line is 86 characters. | 6 Lines should not be more than 80 characters. This line is 87 characters. | 4 Lines should not be more than 80 characters. This line is 88 characters. | 19 Lines should not be more than 80 characters. This line is 89 characters. | 6 Lines should not be more than 80 characters. This line is 90 characters. | 4 Lines should not be more than 80 characters. This line is 91 characters. | 4 Lines should not be more than 80 characters. This line is 92 characters. | 13 Lines should not be more than 80 characters. This line is 93 characters. | 7 Lines should not be more than 80 characters. This line is 94 characters. | 9 Lines should not be more than 80 characters. This line is 95 characters. | 27 Lines should not be more than 80 characters. This line is 96 characters. | 7 Lines should not be more than 80 characters. This line is 97 characters. | 14 Lines should not be more than 80 characters. This line is 98 characters. | 1 Lines should not be more than 80 characters. This line is 99 characters. | 4 Use <-, not =, for assignment. | 10


5. Other Checks

Details of other checks (click to open)

:heavy_multiplication_x: The following 3 function names are duplicated in other packages: - - `hc` from adana, bnlearn, mclust, multigraph - - `null_model` from fabletools, insight, parsnip, qtlpoly - - `pc` from bReeze, FaultTree, gamlss.foreach, kader, lessR, pcalg, SEAsic, tabr, yasp


Package Versions

|package |version | |:--------|:--------| |pkgstats |0.1.6.17 | |pkgcheck |0.1.2.58 | |srr |0.1.3.11 |


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.

WeichengSun commented 4 days ago

Hi @adamhsparks, I can't fix this check error: ✖️ Package name is not available (on CRAN). Because the ILSM on CRAN and this submission here are all my projects

adamhsparks commented 4 days ago

yes, I'm aware, I checked your README and CRAN. Thanks for clarifying though!

adamhsparks commented 4 days ago

Hi @WeichengSun, there's a few NOTEs that I've found when I run checks locally, could you please work to address them as I find a handling editor for {ILSM}?

❯ checking top-level files ... NOTE
  Non-standard files/directories found at top level:
    ‘Contributing.Rmd’ ‘README.Rmd’ ‘codemeta.json’

❯ checking Rd files ... [0s/0s] NOTE
  checkRd: (-3) coid.Rd:32: Lost braces
      32 | \itemize{\item{\code{network.or.subnet_mat1}: input a 'igraph' of network data independently or input sparse matrix together with \code{subnet_mat2}.}}
         |               ^
  checkRd: (-3) coid.Rd:35: Lost braces
      35 | \itemize{\item{\code{network.or.subnet_mat1}: must input matrix(or data.frame) together with \code{subnet_mat2}. the matrix can be sparse matrix and matrix of interaction strength.}}
         |               ^
  checkRd: (-3) coid.Rd:41: Lost braces
      41 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) coid.Rd:42: Lost braces
      42 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) coid.Rd:47: Lost braces
      47 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) coid.Rd:49: Lost braces
      49 | \item{When the two matrices can have different numbers of rows:}
         |      ^
  checkRd: (-3) coid.Rd:51: Lost braces
      51 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) coid.Rd:52: Lost braces
      52 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) coid.Rd:55: Lost braces
      55 | \item{When the two matrices can have the same numbers of rows:}
         |      ^
  checkRd: (-3) coid.Rd:57: Lost braces
      57 | \item{No matter how the row names of the two matrices are arranged, as long as the row names are exactly the same; But we don't handle matrices with empty row names (the function will give an error).}
         |      ^
  checkRd: (-3) coid.Rd:60: Lost braces
      60 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) cois.Rd:32: Lost braces
      32 | \itemize{\item{\code{network.or.subnet_mat1}: input a 'igraph' of network data independently or input sparse matrix together with \code{subnet_mat2}.}}
         |               ^
  checkRd: (-3) cois.Rd:35: Lost braces
      35 | \itemize{\item{\code{network.or.subnet_mat1}: must input matrix(or data.frame) together with \code{subnet_mat2}. the matrix can be sparse matrix and matrix of interaction strength.}}
         |               ^
  checkRd: (-3) cois.Rd:41: Lost braces
      41 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) cois.Rd:42: Lost braces
      42 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) cois.Rd:47: Lost braces
      47 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) cois.Rd:49: Lost braces
      49 | \item{When the two matrices can have different numbers of rows:}
         |      ^
  checkRd: (-3) cois.Rd:51: Lost braces
      51 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) cois.Rd:52: Lost braces
      52 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) cois.Rd:55: Lost braces
      55 | \item{When the two matrices can have the same numbers of rows:}
         |      ^
  checkRd: (-3) cois.Rd:57: Lost braces
      57 | \item{No matter how the row names of the two matrices are arranged, as long as the row names are exactly the same; But we don't handle matrices with empty row names (the function will give an error).}
         |      ^
  checkRd: (-3) cois.Rd:60: Lost braces
      60 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) hc.Rd:29: Lost braces
      29 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) hc.Rd:30: Lost braces
      30 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) hc.Rd:35: Lost braces
      35 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) hc.Rd:36: Lost braces
      36 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) hc.Rd:37: Lost braces
      37 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) hc.Rd:38: Lost braces
      38 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) icmotif_count.Rd:31: Lost braces
      31 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) icmotif_count.Rd:32: Lost braces
      32 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) icmotif_count.Rd:37: Lost braces
      37 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) icmotif_count.Rd:39: Lost braces
      39 | \item{When the two matrices can have different numbers of rows:}
         |      ^
  checkRd: (-3) icmotif_count.Rd:41: Lost braces
      41 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) icmotif_count.Rd:42: Lost braces
      42 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) icmotif_count.Rd:45: Lost braces
      45 | \item{When the two matrices can have the same numbers of rows:}
         |      ^
  checkRd: (-3) icmotif_count.Rd:47: Lost braces
      47 | \item{No matter how the row names of the two matrices are arranged, as long as the row names are exactly the same; But we don't handle matrices with empty row names (the function will give an error).}
         |      ^
  checkRd: (-3) icmotif_count.Rd:50: Lost braces
      50 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) icmotif_role.Rd:31: Lost braces
      31 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) icmotif_role.Rd:32: Lost braces
      32 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) icmotif_role.Rd:37: Lost braces
      37 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) icmotif_role.Rd:39: Lost braces
      39 | \item{When the two matrices can have different numbers of rows:}
         |      ^
  checkRd: (-3) icmotif_role.Rd:41: Lost braces
      41 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) icmotif_role.Rd:42: Lost braces
      42 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) icmotif_role.Rd:45: Lost braces
      45 | \item{When the two matrices can have the same numbers of rows:}
         |      ^
  checkRd: (-3) icmotif_role.Rd:47: Lost braces
      47 | \item{No matter how the row names of the two matrices are arranged, as long as the row names are exactly the same; But we don't handle matrices with empty row names (the function will give an error).}
         |      ^
  checkRd: (-3) icmotif_role.Rd:50: Lost braces
      50 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:31: Lost braces
      31 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:33: Lost braces
      33 | \item{When the two matrices can have different numbers of rows:}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:35: Lost braces
      35 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:36: Lost braces
      36 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:39: Lost braces
      39 | \item{When the two matrices can have the same numbers of rows:}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:41: Lost braces
      41 | \item{No matter how the row names of the two matrices are arranged, as long as the row names are exactly the same; But we don't handle matrices with empty row names (the function will give an error).}
         |      ^
  checkRd: (-3) igraph_from_matrices.Rd:44: Lost braces
      44 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) node_cv.Rd:47: Lost braces
      47 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) node_cv.Rd:48: Lost braces
      48 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) node_cv.Rd:53: Lost braces
      53 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) node_cv.Rd:55: Lost braces
      55 | \item{When the two matrices can have different numbers of rows:}
         |      ^
  checkRd: (-3) node_cv.Rd:57: Lost braces
      57 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) node_cv.Rd:58: Lost braces
      58 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) node_cv.Rd:61: Lost braces
      61 | \item{When the two matrices can have the same numbers of rows:}
         |      ^
  checkRd: (-3) node_cv.Rd:63: Lost braces
      63 | \item{No matter how the row names of the two matrices are arranged, as long as the row names are exactly the same; But we don't handle matrices with empty row names (the function will give an error).}
         |      ^
  checkRd: (-3) node_cv.Rd:66: Lost braces
      66 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) node_cv.Rd:34-35: Lost braces
      34 | \item{If \code{type} is either of "degree", "pagerank", "hub", "authority", "katz", "eigenvector", "closeness", the data frame has two columns, and the second column corresponds to either of "Degree", "Pagerank_versatility",
         |      ^
  checkRd: (-3) node_cv.Rd:36-37: Lost braces
      36 | \item{If \code{type} is "all", the data frame has eight columns, and columns form the second to the eighth correspond to "Degree", "Pagerank_versatility",
         |      ^
  checkRd: (-3) null_model.Rd:30: Lost braces
      30 | \item{For each of the four types of null models, there are corresponding algorithms. The first type, “subnetwork1”, involved scrambling the adjacency matrix of the first and second groups of the multilayer network.}
         |      ^
  checkRd: (-3) null_model.Rd:31: Lost braces
      31 | \item{The second type, “subnetwork2”, focused on scrambling the adjacency matrix of the second and third groups. }
         |      ^
  checkRd: (-3) null_model.Rd:32: Lost braces
      32 | \item{Comprehensively, the third type, “all”, blended the approaches of the first two to disarrange the entire network's adjacency matrix, achieving a thorough perturbation of the network's structure. }
         |      ^
  checkRd: (-3) null_model.Rd:33: Lost braces
      33 | \item{The last type named “Savue” that disarranged inherent structure in terms of the groups of species connected by each interconnecting species of every subnetworks, thus exhibiting different interconnection patterns.}}
         |      ^
  checkRd: (-3) pc.Rd:29: Lost braces
      29 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) pc.Rd:30: Lost braces
      30 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) pc.Rd:35: Lost braces
      35 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) pc.Rd:36: Lost braces
      36 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) pc.Rd:37: Lost braces
      37 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) pc.Rd:38: Lost braces
      38 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^
  checkRd: (-3) poc.Rd:29: Lost braces
      29 | \item{(1). Input in a network of type "igraph" alone.}
         |      ^
  checkRd: (-3) poc.Rd:30: Lost braces
      30 | \item{(2). Must be entered as data frame or matrix with \code{subnet_mat2}.}
         |      ^
  checkRd: (-3) poc.Rd:35: Lost braces
      35 | \item{Try to make the rows of both matrices have the same attributes. Or we default:}
         |      ^
  checkRd: (-3) poc.Rd:36: Lost braces
      36 | \item{(1). If both matrices have row names, then the function counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) poc.Rd:37: Lost braces
      37 | \item{(2). If at most one matrix has row names, the function assigns new row names to both matrices on a row-to-row basis (any extra row names are assigned a new value) and then counts all row names to produce two new matrices with the same row names.}
         |      ^
  checkRd: (-3) poc.Rd:38: Lost braces
      38 | \item{The two matrices can have different numbers of rows, but read our default handling carefully to make sure the calculation is accurate when using this function!!!}
         |      ^

0 errors ✔ | 0 warnings ✔ | 2 notes ✖