zeligverse/0000755000176200001440000000000013107106110012417 5ustar liggesuserszeligverse/tests/0000755000176200001440000000000013102614057013572 5ustar liggesuserszeligverse/tests/testthat.R0000644000176200001440000000010013102614057015544 0ustar liggesuserslibrary(testthat) library(zeligverse) test_check("zeligverse") zeligverse/tests/testthat/0000755000176200001440000000000013107106110015421 5ustar liggesuserszeligverse/tests/testthat/test-attach.R0000644000176200001440000000051713102614057020001 0ustar liggesusers# REQUIRE TEST required Zelig packages load ------------------------------------ test_that("REQUIRE TEST required Zelig packages load", { library(zeligverse) zelig_pkgs <- c('package:zeligverse', 'package:Zelig', 'package:ZeligEI', 'package:ZeligChoice') expect_true(all(zelig_pkgs %in% search())) }) zeligverse/NAMESPACE0000644000176200001440000000065513105373740013661 0ustar liggesusers# Generated by roxygen2: do not edit by hand export(zeligverse_deps) export(zeligverse_update) import(ZeligChoice) import(ZeligEI) importFrom(Zelig,zelig) importFrom(dplyr,"%>%") importFrom(dplyr,filter) importFrom(purrr,map2_lgl) importFrom(purrr,map_chr) importFrom(rstudioapi,getVersion) importFrom(rstudioapi,isAvailable) importFrom(tibble,tibble) importFrom(tools,package_dependencies) importFrom(utils,available.packages) zeligverse/NEWS.md0000644000176200001440000000026013107104034013516 0ustar liggesusers# zeligverse 0.1.1 * Added Amelia, MatchIt, and WhatIf packages. # zeligverse 0.1.0 * Initial release. On load, zeligverse loads (core) Zelig, ZeligEI, and ZeligChoice. zeligverse/R/0000755000176200001440000000000013105373740012635 5ustar liggesuserszeligverse/R/utils.R0000644000176200001440000000045313102614057014116 0ustar liggesusers#' @source tidyverse #' @keywords internal startup_message <- function(...) { if (isTRUE(getOption("tidyverse.quiet"))) return() packageStartupMessage(...) } #' @source tidyverse #' @keywords internal bullets <- function(...) { message(paste0(" * ", ..., collapse = "\n")) } zeligverse/R/update.R0000644000176200001440000000442513105373740014247 0ustar liggesusers#' Update zeligverse packages #' #' This will check to see if all zeligverse packages (and optionally, their #' dependencies) are up-to-date, and will install after an interactive #' confirmation. #' #' @param recursive If \code{TRUE}, will also check all dependencies of #' zeligverse packages. #' #' @importFrom dplyr filter #' @export #' @source tidyverse #' @examples #' \dontrun{ #' zeligverse_update() #' } zeligverse_update <- function(recursive = FALSE) { deps <- zeligverse_deps(recursive) behind <- dplyr::filter(deps, behind) if (nrow(behind) == 0) { message("All zeligverse packages up-to-date") return(invisible()) } message("The following packages are out of date:") bullets(format(behind$package), " (", behind$local, " -> ", behind$cran, ")") message("Update now?") do_it <- utils::menu(c("Yes", "No")) == 1 if (!do_it) { return(invisible()) } utils::install.packages( behind$package, quiet = TRUE, dependencies = if (recursive) FALSE else NA ) invisible() } #' List all zeligverse dependencies #' #' @param recursive If \code{TRUE}, will also list all dependencies of #' zeligverse packages. #' @source tidyverse #' #' @importFrom dplyr %>% #' @importFrom purrr map2_lgl map_chr #' @importFrom tibble tibble #' @importFrom utils available.packages #' @importFrom tools package_dependencies #' @export zeligverse_deps <- function(recursive = FALSE) { pkgs <- available.packages() deps <- tools::package_dependencies("zeligverse", pkgs, recursive = recursive) pkg_deps <- unique(sort(unlist(deps))) base_pkgs <- c( "base", "compiler", "datasets", "graphics", "grDevices", "grid", "methods", "parallel", "splines", "stats", "stats4", "tools", "tcltk", "utils" ) pkg_deps <- setdiff(pkg_deps, base_pkgs) cran_version <- lapply(pkgs[pkg_deps, "Version"], package_version) local_version <- lapply(pkg_deps, utils::packageVersion) behind <- purrr::map2_lgl(cran_version, local_version, `>`) tibble::tibble( package = pkg_deps, cran = cran_version %>% purrr::map_chr(as.character), local = local_version %>% purrr::map_chr(as.character), behind = behind ) } zeligverse/R/zeligverse.R0000644000176200001440000000021013102614057015124 0ustar liggesusers#' @keywords internal "_PACKAGE" # Suppress R CMD check note #' @importFrom Zelig zelig #' @import ZeligChoice #' @import ZeligEI NULL zeligverse/R/attach.R0000644000176200001440000000354513105373603014231 0ustar liggesusers #' @source tidyverse #' @keywords internal ## Add zeligverse modules here and in the DESCRIPTION Imports ## core <- c('Zelig', 'ZeligChoice', 'ZeligEI', 'Amelia', 'MatchIt', 'WhatIf') zeligverse_attach <- function() { versions <- vapply(core, function(x) as.character(utils::packageVersion(x)), character(1)) packages <- paste0("+ ", format(core), " ", format(versions)) if (length(packages) < 6) { packages <- c(packages, rep(' ', 6 - length(packages))) } info <- platform_info() info <- paste0(format(paste0(names(info)), justify = "right"), ": ", info) n <- max(length(packages), length(info)) info <- c(info, rep("", n - length(info))) info <- paste0(packages, " ", info, collapse = "\n") startup_message(info) suppressPackageStartupMessages( lapply(core, library, character.only = TRUE, warn.conflicts = FALSE) ) invisible() } #' @importFrom rstudioapi getVersion isAvailable #' @source tidyverse #' @keywords internal platform_info <- function() { if (rstudioapi::isAvailable()) { ver <- rstudioapi::getVersion() ui <- paste0("RStudio ", ver, "") } else { ui <- .Platform$GUI } ver <- R.version c( Date = format(Sys.Date()), R = paste0(ver$major, ".", ver$minor), OS = os(), GUI = ui, Locale = Sys.getlocale("LC_COLLATE"), TZ = Sys.timezone() ) } #' @source tidyverse #' @keywords internal os <- function() { x <- utils::sessionInfo()$running # Regexps to clean up long windows strings generated at # https://github.com/wch/r-source/blob/af7f52f70101960861e5d995d3a4bec010bc89e6/src/library/utils/src/windows/util.c x <- gsub("Service Pack", "SP", x) x <- gsub(" [(]build \\d+[)]", "", x) x } zeligverse/R/zzz.R0000644000176200001440000000036013102614057013610 0ustar liggesusers.onAttach <- function(...) { needed <- core[!is_attached(core)] if (length(needed) == 0) return() zeligverse_attach() # tidyverse_conflicts() } is_attached <- function(x) { paste0("package:", x) %in% search() } zeligverse/README.md0000644000176200001440000000412113107103764013710 0ustar liggesusers [![zelig-logo](man/figures/zelig.png)](http://zeligproject.org) [![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active) [![CRAN\_Status\_Badge](http://www.r-pkg.org/badges/version/zeligverse)](https://cran.r-project.org/package=zeligverse) [![Travis-CI Build Status](https://travis-ci.org/IQSS/zeligverse.svg?branch=master)](https://travis-ci.org/IQSS/zeligverse) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/IQSS/zeligverse?branch=master&svg=true)](https://ci.appveyor.com/project/IQSS/zeligverse) About ===== This package makes it convenient to install and load all of the stable Zelig packages. This includes: - [Zelig](https://github.com/IQSS/Zelig) - [ZeligChoice](https://github.com/IQSS/ZeligChoice) - [ZeligEI](https://github.com/IQSS/ZeligEI) - [Amelia](https://gking.harvard.edu/amelia) - [MatchIt](https://gking.harvard.edu/matchit) - [WhatIf](https://gking.harvard.edu/whatif) Use === To use **zeligverse**, simply load the package: ``` r library(zeligverse) ``` ## + Zelig 5.1.1.90000 Date: 2017-05-17 ## + ZeligChoice 0.9.5.90000 R: 3.4.0 ## + ZeligEI 0.1.1 OS: macOS Sierra 10.12.5 ## + Amelia 1.7.4 GUI: unknown ## + MatchIt 3.0.1 Locale: en_US.UTF-8 ## + WhatIf 1.5.8 TZ: America/New_York As you can see, all of the stable Zelig packages are loaded. Installing **zeligverse** will install these packages. Adding packages \[for developers\] ================================== **zeligverse** developers can add packages to **zeligverse** by: - adding the package name to the *DESCRIPTION* `Imports` - adding the package name to the `core` object in *attach.R* Inspiration =========== The inspiration (and much of the underlying code) for **zeligverse** comes from the [tidyverse](http://tidyverse.org/) package. zeligverse/MD50000644000176200001440000000135313107106110012731 0ustar liggesusers1060ed7448c072d55504837bdd835046 *DESCRIPTION 431a661dc94e5e5fa94f2442584e4f51 *NAMESPACE 7da6a9ed86e2dcd67190a61ee8de4bbb *NEWS.md 8ec63919ede3dd51a4ebcf1da5ca41d8 *R/attach.R 92dafd3f92588a7346b182dfd4063051 *R/update.R 03293a0f693983a2e4d812239d1bba1f *R/utils.R a3e88fd0713ea52ab550a29ddab400af *R/zeligverse.R b5dd606ab2ff3283d69c585ee4e0eda6 *R/zzz.R 04c6c4f4f1e107bc8928dc860bb17b13 *README.md 0c6df7a3fd72f6356621bafc6c775f8e *man/figures/zelig.png 9ee4b9ca48878fb0a5797f5091d30e75 *man/zeligverse-package.Rd 5ba18081208a2b008d41496cb0b3f04e *man/zeligverse_deps.Rd d6d6ad42b7dc3837962ab13f47694f20 *man/zeligverse_update.Rd 014c0a17870caab854fcac18a03582e4 *tests/testthat.R 5355c357c88fcc2e0958aaafe2b9bc07 *tests/testthat/test-attach.R zeligverse/DESCRIPTION0000644000176200001440000000150113107106110014122 0ustar liggesusersPackage: zeligverse Type: Package Title: Easily Install and Load Stable Zelig Packages Version: 0.1.1 Date: 2017-05-17 Authors@R: c( person("Christopher", "Gandrud", email = "zelig.zee@gmail.com", role = c("aut", "cre")) ) Description: Provides an easy way to load stable Core Zelig and ancillary Zelig packages. License: GPL (>= 3) Encoding: UTF-8 Imports: Amelia, dplyr, MatchIt, purrr, rstudioapi, tibble, WhatIf, Zelig, ZeligChoice, ZeligEI URL: https://github.com/IQSS/zeligverse BugReports: https://github.com/IQSS/zeligverse/issues LazyData: true RoxygenNote: 6.0.1 Suggests: testthat NeedsCompilation: no Packaged: 2017-05-17 17:30:41 UTC; cgandrud Author: Christopher Gandrud [aut, cre] Maintainer: Christopher Gandrud Repository: CRAN Date/Publication: 2017-05-17 17:45:44 UTC zeligverse/man/0000755000176200001440000000000013105373740013207 5ustar liggesuserszeligverse/man/figures/0000755000176200001440000000000013102614057014647 5ustar liggesuserszeligverse/man/figures/zelig.png0000644000176200001440000003534213102614057016476 0ustar liggesusersPNG  IHDR~:IDATx} lUוB!c\C>J)8 % PJB)%.C)%@7LJBCͣLJ3Q&bxRphBxE!A(B!dY~k\s;19Z[wPǬqa[̥ B(fE8xy2D2d+ۅY:x^_"7}O{쁴6dYs6@~=On=y8TM^U"n=P"f>.]̮G їdrU~R<-g"[Wmv~/$m܊6c#~qe #xl0ft*iw몏zN.(@ $ݡ?#WaRuv86cVDC1q4%ըer'ٺJZP잇-xjir_sM r=麮ǦZ.@1H̚uܩ` N{:w4 bѧ UŌ:%d75ytP B$8JP=E}d]q"4R%\،rwnL0\)x5<>Z{TKܷؤ#OϣZY+8.L#4G=ƌȘa"z>NohO742W Fı}_a'We;@tuzj\=ȼmJcrű7YQ!mp.yג=XjvAkdcprOQt]cʯ_>ݭUqs/UzVp%rO [v[.$3Z @cuw\M.dӈ4i>Z>Q}y8晰66H@pkPkTGƎ]~F"4 2y 8F֚>4Q_V 9Jd<*9V\(X1JS f/?YVd@6݊'ȚW& Roj8BP/\q{L!Ȕ~1r՟ߛ[ v3qD(f z6j^-UR,q5}q4gđI^?}Hb)b!6}!,I,f;] i14gG ̮{-Nߑ6rF@}G֞G~24\|`]ER,B\/@vђϕ> ͢x1^ہGt<;sz9hv\iԊir]Wi @'Ŭ"xtpHbVu9aM:>*8ߤoW7y۶ܲzPPx0ɣ'y; U,/mvd*{ɣlֹ:Wg&dE[!q[NG>W&:\O#YO1m ŬtS-_;=AsXfG*';??I,؀1U} wL,54#羷L+캬 ,=u;L&4 W"\,M`qVkqPaD7ɃWZt0PzآpVzgB1.x2l!b䶴!rՉixW*mB״;Yl(#o3NvLܫs}E?;OZ\%kq}' ?ݯ<YiAS4654l7y Chޟ%[q&՜#rpkO ,SRJ*dyG&mUwoty$29RT5X(Oc*o˚=tأ0Fy-dNmU𷒾?lKMP2QuQ^xV(: XqM;Kia81(bVsR=wT1Fc=QPපL /Cr?#ïGQdU-Sm9}Bǘ4X& O>mjybbP @{YyfϟU[;]Gz>\+'g! u"u^FʂYɎn!c&;"(R=C=b}ւoɗR>Gr$tTm.+h,؂Ƀ Q}dʷ꿼R$fN߯e+ͮ{YQC:`ʆ@VТx[e\!*.H: >ViNUryL2Qeʎ@5NX4FHE/bjTQOqqpbFq\gfA3G*4RmOu.Β|F'  D_ +~[OUc Q5v_9s^%O=< $ Zwmjm%SmłhB;x'?vTކ!ל,cq3~`_NOS:?㒪Ya* YRɣHr%Mgܗ<[tΠbő- sc3W[SmtR bH ɣcE5'KBfKzʶU4mkpGB11pi˂DcVl@4&XQjs|{hp/?zCU?6}|xg,v 8FK zȮ\IJed{&f!g- E <9hJ2k5}1Umf|!=Ț@o%=@%MbV#8HMuKOv˕D?<%d[hH߸m{UZm+,=U[XQla>ɣ/Kt(3qZSg;8>ǫYNZ&#^)bXo*}cļɌ#(m  A,1~bj80uǫT-lYω[sF+σio[AGvUqa_7 =\8o!elaE@ y$<݊= #}Uy4Xy7vP bUYuu4Ny#< K񵚾;ǪĺN<!& ٿy{*%a[-؁^DWZ|vS˨m Lf@r%ema[pom<耹mU^=X}-9yD¶8h nEŹulf2[: deb Jɾ敉B)C:j7f]d*Mz'M=Cɦʹˎlgմ&I?Kp"ߒ~B-p8n"2LsMK) X?UoS-2s3KMviYh(&U~wM9] joڃ/VmwFR}y{ uqI @l1! ]X<q݋R{3ױEE|Ӷu ܓąl,a]uIչsɑIDxZ293=gO? }Vd͈V5N2ρZw#]՗ȃw\UzV2V]B{?+wkWuL&z;zVkNW0]ȃ+="&9nSAsD8m& 9Tz̰!ΖYf,[XZ\7q'srm_?{'2XH}$wÛ9UPdCa`QGL )1ow|_4oi~~|^&}Q{N3E 92YA\3m1EoOl<.FSMGKx UE8g$BN~'m춳Em,<8|#1>}R֕;>+DRaro{~٨'olvD%z4Ϛz/(ۖhӈVdnH;#1aof kBVݶhzWh8ǮyHBt0]+'_Jo7e QqrzݡvyOZ-,ѓ'/3Y/Es'@\~n$#%-℧46Ga^[lϏ>[Mk3DnI mdAaȽ4Q{ʓۛ<^z* ԕy*KmQGMY4AMcVTg͸;~[p@xNYODE :}z4Mos,Cn Zxio8M/N#V V֟C٦w&QJ$#&MWpBPhY gݷUHbMLċEZ\n 0*uAxc:Fo=rp{5;Sg5iw9RAhTq'FgX]-E<ͳ[7}KWdoN5LѻxV_,`i;q 6=N#9$#[Xn%[XQ^8}=?/Nd i(vYBG4j癭({5Di⭮lJz7/E[=L@V]dcUۥ=7[r$sg#C 9-A@"Y@L+Fպ=CLf#l<*>0 6{VGۺ0>ݮl:s2L z/TnTQg<! ;addszM`@ooz`ڋS&4vEE1[XV[X <HD vIHmÉz D-vm+.܊ .ZܺFvxg+1f˶Rv<5ʵ'e+OYj=y !rxʐ~h[ Lk>un[[8SES ĽofzgAY| ])Q@B,";f0w+ZQ鳅4-,K< l\ p7h^e+ fQ1d@=3[BoK@\^:XV{+AڂuO "&cyBІ4ȣ -2oDtљJsoQ4`2%HL\QU__}%z4CcaI D'Ҩ ۪ #^G!#W)Sk)ܕVlaA @(Wc&|,%C miɳVy[z[෰" }Cp yԒ=jC|sV='߻I%2>VG@Α!qY޲l1y؁# w>'"Hc.Aߪd%#SאU²Z}3`qWAsk^ d^ /9s"krR^Xqm?Hd(E@hZ*[WLJ[-SB[(U|v˔݋-XCɼPr֖Gayd{<s dX{N 7bM|SeQV=rMu}G-'^Otzy(@9.x`Dfy D8l[%Cш fdc[lx@}>׃,)s.F\uKfeyʶ^VDvGLGW!q۽{hxt+9i^bL>$c{'zv@̹ vz'ɪw)mv<6r-ci-Wi΁KdFty>mfRKnaE6<7 kkbg@l JVEyJO8,`1=|3]fwǫi| IKC~(ouram<1ױ Qەs5_]oܟ&OZab^i~J_L^|orrs`<Kk#Ӑ)YjsF&]Tl,ibFIS9[@%U1=fcc럣k,B4rueDC)@o=91^YJ5IL> HOtpɃn\KLD{!^Oe;3/z<3y}第mq72жzFX`7Eʶ&9q&HXжڲ _.gnf*[, RW7EۈqcЋխ8F[0la\k^y\XFxVN^ЦfBllGݐcٖbDOqnc|ű-q O|mi{֣4@V8}{ȅc>7;CMB},,f/|hvxa̠:X@}wm<;竼 Q/ޕC׈Cf<4yȷ]}zolyU4MQ4z'd4>k%1,.wWC4cmdI/}Dzlq tv' PNi5=ȩW[\6/B8u٣En߹hLNǚ}gB>=эo6p,gHefj|=@2$k_Z an9N2KVQDwqV@ GD=1yx"Z5i3Nka@Rk4+H%=?ȼczG$3ktL.ή"Or4OAM< {,5fdm8u~>MV>;ji^=O7rp='Iw)e۞Hɬ5fx|Yz%GVI@p]/Bdm-H9z 1G:dnDX;x,$tD'ٕ]~fd/ފ{xEsws]J4=%rvfg4uEy|^ F(Oϩ7zX1 |qyo1LK' 0T}Mm棛p#2[gsMC-=ǚ=mq}"_2rȃW6 +"2&VE~~ nc[5F*<)Q$ NU/tXe}65o" [)1n#)J&ZcXD/ =>ѕɧ zx$XJ?3F$`2b|E1kP(KB*" ouNaxJ:X&8-n2(DtOY+0cぬLgc"!5,lYq=w+ܶE5@VEmUwׅ][e7ȜZ2g/.@V D %G8#?IdB ME-Fmx OD7N邹8Nt_\]/.uzlsA3z9F= l2lڞ:vߕc+Sg"vڙQayW 7Oɂv~=-ңj]ƞ"rYfY"5py\w<ȽG13x݈ %;_' Sr/Sg妻?ǡ2< o$yc WVSbvVTy;_6/d11&øa1Zip]غt?h%;j>B"B[}ܨɠ $8vRA>nD9@p=*"--N$k˧<KDaTg;A*W^d3>&y m/D.2ĕ(l2a #ZwF="wODt@8@q7x6[kW9eɶ2!ھkNŽI>KFUbJTlE*jL5:k 11ETջO$2пVFSbIHLM