{
  "_id": "6a10a8ebacfb0bcc41cbdc65",
  "Package": "MultiObjMatch",
  "Type": "Package",
  "Title": "Multi-Objective Matching Algorithm",
  "Version": "1.0.0",
  "Authors@R": "c(\nperson(\"Shichao\", \"Han\", email = \"schan21@berkeley.edu\", role = c(\"cre\", \"aut\")),\nperson(\"Samuel D.\", \"Pimentel\", email = \"spi@berkeley.edu\", role = \"aut\"))",
  "Description": "Matching algorithm based on network-flow structure. Users\nare able to modify the emphasis on three different optimization\ngoals: two different distance measures and the number of\ntreated units left unmatched. The method is proposed by\nPimentel and Kelz (2019) <doi:10.1080/01621459.2020.1720693>.\nThe 'rrelaxiv' package, which provides an alternative solver\nfor the underlying network flow problems, carries an academic\nlicense and is not available on CRAN, but may be downloaded\nfrom Github at <https://github.com/josherrickson/rrelaxiv/>.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.1.2",
  "Config/testthat/edition": "3",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-22 18:51:50 UTC",
    "User": "root"
  },
  "Author": "Shichao Han [cre, aut], Samuel D. Pimentel [aut]",
  "Maintainer": "Shichao Han <schan21@berkeley.edu>",
  "Config/pak/sysreqs": "cmake make libicu-dev libuv1-dev libx11-dev\nzlib1g-dev",
  "Repository": "https://shichaohan.r-universe.dev",
  "Date/Publication": "2024-07-05 02:42:35 UTC",
  "RemoteUrl": "https://github.com/cran/MultiObjMatch",
  "RemoteRef": "HEAD",
  "RemoteSha": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
  "MD5sum": "b615e9df37935083424b0e8c722db282",
  "_user": "shichaohan",
  "_type": "src",
  "_file": "MultiObjMatch_1.0.0.tar.gz",
  "_fileid": "d7c7c4d40c5c5106ecfb0230258be85f5e0fb61a726bed96320ee1048a1a3c16",
  "_filesize": 243317,
  "_sha256": "d7c7c4d40c5c5106ecfb0230258be85f5e0fb61a726bed96320ee1048a1a3c16",
  "_created": "2026-05-22T18:51:50.000Z",
  "_published": "2026-05-22T19:05:15.218Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77443284621,
      "time": 246,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "7168202201"
    },
    {
      "job": 77443284606,
      "time": 234,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "NOTE",
      "artifact": "7168198752"
    },
    {
      "job": 77443284611,
      "time": 271,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "7168260295"
    },
    {
      "job": 77443284613,
      "time": 179,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "NOTE",
      "artifact": "7168274799"
    },
    {
      "job": 77442708767,
      "time": 222,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7168071992"
    },
    {
      "job": 77443284663,
      "time": 144,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7168179083"
    },
    {
      "job": 77443284610,
      "time": 185,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "7168190602"
    },
    {
      "job": 77443284708,
      "time": 174,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "7168187758"
    },
    {
      "job": 77443284599,
      "time": 176,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "NOTE",
      "artifact": "7168183565"
    }
  ],
  "_buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/MultiObjMatch",
  "_commit": {
    "id": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
    "author": "Shichao Han <schan21@berkeley.edu>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.0.0\n",
    "time": 1720147355
  },
  "_maintainer": {
    "name": "Shichao Han",
    "email": "schan21@berkeley.edu",
    "login": "shichaohan",
    "description": "Research Data Scientist@Weixin, Tencent | Berkeley Stats | Causal Inference | Experimental Design",
    "uuid": 36174133
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "cobalt",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "optmatch",
      "role": "Imports"
    },
    {
      "package": "matchMulti",
      "role": "Imports"
    },
    {
      "package": "fields",
      "role": "Imports"
    },
    {
      "package": "plyr",
      "role": "Imports"
    },
    {
      "package": "RCurl",
      "role": "Imports"
    },
    {
      "package": "gtools",
      "role": "Imports"
    },
    {
      "package": "rcbalance",
      "role": "Imports"
    },
    {
      "package": "MASS",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "methods",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "rlemon",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "rrelaxiv",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "shichaohan",
      "count": 5,
      "uuid": 36174133
    }
  ],
  "_userbio": {
    "uuid": 36174133,
    "type": "user",
    "name": "ShichaoHan",
    "description": "Research Data Scientist@Weixin, Tencent | Berkeley Stats | Causal Inference | Experimental Design"
  },
  "_downloads": {
    "count": 195,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/MultiObjMatch"
  },
  "_searchresults": 1,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/MultiObjMatch.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "manual.pdf"
  ],
  "_realowner": "shichaohan",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2022-06-01"
    },
    {
      "version": "0.1.1",
      "date": "2023-09-15"
    },
    {
      "version": "0.1.2",
      "date": "2023-09-15"
    },
    {
      "version": "0.1.3",
      "date": "2023-11-23"
    },
    {
      "version": "1.0.0",
      "date": "2024-07-04"
    }
  ],
  "_exports": [
    "check_representative",
    "combine_match_result",
    "compare_matching",
    "compare_tables",
    "dist_bal_match",
    "filter_match_result",
    "generateRhoObj",
    "get_balance_table",
    "get_pairdist_balance_graph",
    "get_pairdist_graph",
    "get_rho_obj",
    "get_tv_graph",
    "get_unmatched",
    "matched_data",
    "two_dist_match",
    "visualize"
  ],
  "_help": [
    {
      "page": "addBalance",
      "title": "Add fine balance edges",
      "topics": [
        "addBalance"
      ]
    },
    {
      "page": "addExclusion",
      "title": "Add exclusion edges",
      "topics": [
        "addExclusion"
      ]
    },
    {
      "page": "balanceCosts",
      "title": "Create a skeleton representation of the balance edge costs",
      "topics": [
        "balanceCosts"
      ]
    },
    {
      "page": "build.dist.struct",
      "title": "An internal helper function that generates the data abstraction for the edge weights of the main network structure.",
      "topics": [
        "build.dist.struct"
      ]
    },
    {
      "page": "build.dist.struct_user",
      "title": "An internal helper function that generates the data abstraction for the edge weights of the main network structure using the distance matrix passed by the user.",
      "topics": [
        "build.dist.struct_user"
      ]
    },
    {
      "page": "callrelax",
      "title": "Call relax on the network",
      "topics": [
        "callrelax"
      ]
    },
    {
      "page": "check_representative",
      "title": "Check the representativeness of matched treated units",
      "topics": [
        "check_representative"
      ]
    },
    {
      "page": "combine_dist",
      "title": "An internal helper function that combines two distance object",
      "topics": [
        "combine_dist"
      ]
    },
    {
      "page": "combine_match_result",
      "title": "Combine two matching result",
      "topics": [
        "combine_match_result"
      ]
    },
    {
      "page": "compare_matching",
      "title": "Generate covariate balance in different matches",
      "topics": [
        "compare_matching"
      ]
    },
    {
      "page": "compare_tables",
      "title": "Summarize covariate balance table",
      "topics": [
        "compare_tables"
      ]
    },
    {
      "page": "convert_index",
      "title": "An internal helper function that translates the matching index in the sorted data frame to the original dataframe's row index",
      "topics": [
        "convert_index"
      ]
    },
    {
      "page": "convert_names",
      "title": "Internal helper function that converts axis name to internal variable name",
      "topics": [
        "convert_names"
      ]
    },
    {
      "page": "costSkeleton",
      "title": "Create cost skeleton",
      "topics": [
        "costSkeleton"
      ]
    },
    {
      "page": "data_precheck",
      "title": "Data precheck: Handle missing data(mean imputation) and remove redundant columns; it also adds an NA column for indicating whether it's missing",
      "topics": [
        "data_precheck"
      ]
    },
    {
      "page": "descr.stats_general",
      "title": "Generate summary statistics for matches",
      "topics": [
        "descr.stats_general"
      ]
    },
    {
      "page": "dist_bal_match",
      "title": "Optimal tradeoffs among distance, exclusion and marginal imbalance",
      "concept": [
        "main matching function"
      ],
      "topics": [
        "dist_bal_match"
      ]
    },
    {
      "page": "distanceFunctionHelper",
      "title": "Helper function that change input distance matrix",
      "topics": [
        "distanceFunctionHelper"
      ]
    },
    {
      "page": "dummy",
      "title": "This is a modified version of the function \"dummy\" from the R package dummies. Original code Copyright (c) 2011 Decision Patterns.",
      "topics": [
        "dummy"
      ]
    },
    {
      "page": "edgelist2ISM",
      "title": "Change the edgelist to the infinity sparse matrix",
      "topics": [
        "edgelist2ISM"
      ]
    },
    {
      "page": "excludeCosts",
      "title": "Create a skeleton representation of the exclusion edge costs",
      "topics": [
        "excludeCosts"
      ]
    },
    {
      "page": "extractEdges",
      "title": "Extract edges from the network",
      "topics": [
        "extractEdges"
      ]
    },
    {
      "page": "extractSupply",
      "title": "Extract the supply nodes from the net",
      "topics": [
        "extractSupply"
      ]
    },
    {
      "page": "filter_match_result",
      "title": "Filter match result",
      "topics": [
        "filter_match_result"
      ]
    },
    {
      "page": "flattenSkeleton",
      "title": "Turns a skeleton representation of edge costs in a network",
      "topics": [
        "flattenSkeleton"
      ]
    },
    {
      "page": "generate_rhos",
      "title": "Generate rho pairs",
      "topics": [
        "generate_rhos"
      ]
    },
    {
      "page": "generateRhoObj",
      "title": "Penalty and objective values summary",
      "concept": [
        "numerical analysis helper functions"
      ],
      "topics": [
        "generateRhoObj"
      ]
    },
    {
      "page": "get_balance_table",
      "title": "Generate balance table",
      "concept": [
        "numerical analysis helper functions"
      ],
      "topics": [
        "get_balance_table"
      ]
    },
    {
      "page": "get_five_index",
      "title": "An internal helper function that gives the index of matching with a wide range of number of treated units left unmatched",
      "topics": [
        "get_five_index"
      ]
    },
    {
      "page": "get_pairdist_balance_graph",
      "title": "Total variation imbalance vs. marginal imbalance",
      "concept": [
        "Graphical helper functions for analysis"
      ],
      "topics": [
        "get_pairdist_balance_graph"
      ]
    },
    {
      "page": "get_pairdist_graph",
      "title": "Distance vs. exclusion",
      "concept": [
        "Graphical helper functions for analysis"
      ],
      "topics": [
        "get_pairdist_graph"
      ]
    },
    {
      "page": "get_rho_obj",
      "title": "Penalty and objective values summary",
      "concept": [
        "numerical analysis helper functions"
      ],
      "topics": [
        "get_rho_obj"
      ]
    },
    {
      "page": "get_tv_graph",
      "title": "Marginal imbalance vs. exclusion",
      "concept": [
        "Graphical helper functions for analysis"
      ],
      "topics": [
        "get_tv_graph"
      ]
    },
    {
      "page": "get_unmatched",
      "title": "Get unmatched percentage",
      "concept": [
        "numerical analysis helper functions"
      ],
      "topics": [
        "get_unmatched"
      ]
    },
    {
      "page": "getExactOn",
      "title": "Generate a factor for exact matching.",
      "topics": [
        "getExactOn"
      ]
    },
    {
      "page": "getPropensityScore",
      "title": "Fit propensity scores using logistic regression.",
      "topics": [
        "getPropensityScore"
      ]
    },
    {
      "page": "makeInfinitySparseMatrix",
      "title": "Internal helper to build infinity sparse matrix",
      "topics": [
        "makeInfinitySparseMatrix"
      ]
    },
    {
      "page": "makeSparse",
      "title": "Helper function to mask edges",
      "topics": [
        "makeSparse"
      ]
    },
    {
      "page": "matched_data",
      "title": "Get matched dataframe",
      "topics": [
        "matched_data"
      ]
    },
    {
      "page": "matched_index",
      "title": "An internal helper function that translate the matching index in the sorted data frame to the original dataframe's row index",
      "topics": [
        "matched_index"
      ]
    },
    {
      "page": "matrix2cost",
      "title": "change the distance matrix to cost",
      "topics": [
        "matrix2cost"
      ]
    },
    {
      "page": "matrix2edgelist",
      "title": "Helper function to convert matrix to list",
      "topics": [
        "matrix2edgelist"
      ]
    },
    {
      "page": "meldMask",
      "title": "Helper function to combine two sparse distances",
      "topics": [
        "meldMask"
      ]
    },
    {
      "page": "netFlowMatch",
      "title": "Create network flow structure",
      "topics": [
        "netFlowMatch"
      ]
    },
    {
      "page": "obj.to.match",
      "title": "An internal helper function that transforms the output from the RELAX algorithm to a data structure that is more interpretable for the output of the main matching function",
      "topics": [
        "obj.to.match"
      ]
    },
    {
      "page": "pairCosts",
      "title": "Create a skeleton representation of the edge costs",
      "topics": [
        "pairCosts"
      ]
    },
    {
      "page": "rho_proposition",
      "title": "Generate penalty coefficient pairs",
      "topics": [
        "rho_proposition"
      ]
    },
    {
      "page": "solveP",
      "title": "Solve the network flow problem - basic version",
      "topics": [
        "solveP"
      ]
    },
    {
      "page": "solveP1",
      "title": "Solve the network flow problem - twoDistMatch",
      "topics": [
        "solveP1"
      ]
    },
    {
      "page": "summary.multiObjMatch",
      "title": "Generate numerical summary",
      "topics": [
        "summary.multiObjMatch"
      ]
    },
    {
      "page": "two_dist_match",
      "title": "Optimal tradeoffs among two distances and exclusion",
      "concept": [
        "main matching function"
      ],
      "topics": [
        "two_dist_match"
      ]
    },
    {
      "page": "visualize",
      "title": "Visualize tradeoffs",
      "topics": [
        "visualize"
      ]
    }
  ],
  "_rundeps": [
    "backports",
    "base64enc",
    "bit",
    "bit64",
    "bitops",
    "boot",
    "broom",
    "bslib",
    "cachem",
    "checkmate",
    "chk",
    "cli",
    "clipr",
    "cluster",
    "cobalt",
    "codetools",
    "coin",
    "colorspace",
    "cpp11",
    "crayon",
    "data.table",
    "digest",
    "dotCall64",
    "dplyr",
    "evaluate",
    "farver",
    "fastmap",
    "fields",
    "fontawesome",
    "forcats",
    "foreach",
    "foreign",
    "Formula",
    "fs",
    "gdata",
    "generics",
    "ggplot2",
    "glmnet",
    "glue",
    "gridExtra",
    "gtable",
    "gtools",
    "haven",
    "highr",
    "Hmisc",
    "hms",
    "htmlTable",
    "htmltools",
    "htmlwidgets",
    "isoband",
    "iterators",
    "jomo",
    "jquerylib",
    "jsonlite",
    "knitr",
    "labeling",
    "lattice",
    "libcoin",
    "lifecycle",
    "lme4",
    "magrittr",
    "maps",
    "MASS",
    "matchMulti",
    "Matrix",
    "matrixStats",
    "memoise",
    "mice",
    "mime",
    "minqa",
    "mitml",
    "modeltools",
    "multcomp",
    "mvtnorm",
    "nlme",
    "nloptr",
    "nnet",
    "numDeriv",
    "optmatch",
    "ordinal",
    "pan",
    "pillar",
    "pkgconfig",
    "plyr",
    "prettyunits",
    "progress",
    "purrr",
    "R6",
    "rappdirs",
    "rbibutils",
    "rcbalance",
    "rcbsubset",
    "RColorBrewer",
    "Rcpp",
    "RcppEigen",
    "RCurl",
    "Rdpack",
    "readr",
    "reformulas",
    "rlang",
    "rlemon",
    "rmarkdown",
    "rpart",
    "rstudioapi",
    "S7",
    "sandwich",
    "sass",
    "scales",
    "shape",
    "spam",
    "stringi",
    "stringr",
    "survival",
    "TH.data",
    "tibble",
    "tidyr",
    "tidyselect",
    "tinytex",
    "tzdb",
    "ucminf",
    "utf8",
    "vctrs",
    "viridisLite",
    "vroom",
    "weights",
    "withr",
    "xfun",
    "yaml",
    "zoo"
  ],
  "_score": 1,
  "_indexed": true,
  "_nocasepkg": "multiobjmatch",
  "_universes": [
    "shichaohan"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-05-22T18:57:53.000Z",
      "distro": "noble",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "2f7a84d08b821a5abdd38fb0af84282c21be7873733ecd7745d5aacd42176e92",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-05-22T18:57:47.000Z",
      "distro": "noble",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "6aa6b0770c5001a873488ed9e0b4f94e4024f54508bd945745402b0b6d0903cf",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-05-22T19:01:26.000Z",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "5ec0b9d4dce0dabc2d9a8e8d438800cccd12d55194796a137cfea508e3b29a78",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-05-22T19:02:38.000Z",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "f38eb93d842a6a522f008efef6588f2f9fe8d27c9266504394ef483e5c6ce83a",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0",
      "date": "2026-05-22T18:58:08.000Z",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "421bde65ef872e4fb73e05a3f2b7bcecde28ee3fd670438d7227fc2755066561",
      "status": "success",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-05-22T18:56:59.000Z",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "f9fa7ac8106085fa2546d6b5d27c96133cbd534f79edfbaed7b0e2b3b9be661d",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-05-22T18:56:52.000Z",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "a3958e61fc5ff15f65feaf4754ee7b433e5d46ba29c898c07e8ef27c39ca3b30",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-05-22T18:56:39.000Z",
      "commit": "18e4360a8e5b18446eb2a20da40cc81da73c5ad4",
      "fileid": "7441e1c5d97ea4a8425d9470b50de45089efa2ba7dc684b665266335d9f2920a",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/shichaohan/actions/runs/26273718275"
    }
  ]
}