rlang

R 패키지 메타데이터와 수집 신호를 모아 봅니다.

Packages / CRAN / rlang

rlang

v1.2.0
Repository CRANLicense MIT + file LICENSELifecycle activeNeeds compilation yes
DOI
10.32614/CRAN.package.rlang
Reverse imports
137,331
Reverse depends
832

Core Signals

첫 화면에서 판단해야 할 수집 신호를 먼저 배치합니다.

2
Reverse imports
137,331
Reverse depends
832

Supported Backends

DESCRIPTION에서 감지한 backend 관련 package입니다.

0
backend package 신호가 없습니다.

Quick Facts

기본 메타데이터를 작은 카드와 토큰으로 압축합니다.

profile
Repository
CRAN
Version
1.2.0
License
MIT + file LICENSE
Lifecycle
active
Needs compilation
yes
Reverse depends
832
Reverse imports
137,331
Last observed
2026-05-30
CRAN
cran.r-project.org/package=rlang

Build fields

Enhances
1
winch

수집 소스별 패키지 정보

1개 소스
CRAN
1.2.0
2026-05-30
License
MIT + file LICENSE
Depends
R (>= 4.0.0)
Imports
utils
Suggests
cli (>= 3.1.0), covr, crayon, desc, fs, glue, knitr, magrittr, methods, pillar, pkgload, rmarkdown, stats, testthat (>= 3.3.2), tibble, usethis, vctrs (>= 0.2.3), withr
Enhances
winch
Needs compilation
yes
Reverse depends
832
Reverse imports
137,331
Lifecycle
active
Last observed
2026-05-30 10:45:11

이 패키지가 의존하는 패키지

5개 표시전체 20개
PackageTypeSpec
utils
CRAN · 1.2.0 · 2026-05-30
Importsutils
cli
CRAN · 1.2.0 · 2026-05-30
Suggestscli (>= 3.1.0)
covr
CRAN · 1.2.0 · 2026-05-30
Suggestscovr
crayon
CRAN · 1.2.0 · 2026-05-30
Suggestscrayon
desc
CRAN · 1.2.0 · 2026-05-30
Suggestsdesc
1 / 4

이 패키지를 쓰는 패키지

5개 표시전체 120개
PackageTypeSpec
AQuadtree
1.0.6
CRAN · 2026-05-30
Dependsrlang
bistablehistory
1.1.4
CRAN · 2026-05-30
Dependsrlang
eq5d
0.16.3
CRAN · 2026-05-30
Dependsrlang
eyelinkReader
1.0.3
CRAN · 2026-05-30
Dependsrlang
fxl
1.7.3
CRAN · 2026-05-30
Dependsrlang
1 / 24

Reverse dependency summary

3 types
TypePackages
Depends21
Imports3,524
Suggests162

패키지 페이지

Reverse depends
46
Reverse imports
7,606
Reverse suggests
336
All links
4,022
Repository
CRAN
Version
1.2.0
Collected
2026-05-17 02:20:01
Package page
https://cran.r-project.org/web/packages/rlang/index.html
DOI
10.32614/CRAN.package.rlang
CRAN checks
https://cran.r-project.org/web/checks/check_results_rlang.html
README
https://cran.r-project.org/web/packages/rlang/readme/README.html
NEWS
https://cran.r-project.org/web/packages/rlang/news/news.html
Reference HTML
https://cran.r-project.org/web/packages/rlang/refman/rlang.html
Reference PDF
https://cran.r-project.org/web/packages/rlang/rlang.pdf
Source package
https://cran.r-project.org/src/contrib/rlang_1.2.0.tar.gz
Archive
https://CRAN.R-project.org/src/contrib/Archive/rlang
Page fields
Author
Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd]
BugReports
https://github.com/r-lib/rlang/issues
CRAN Checks
rlang results
DOI
10.32614/CRAN.package.rlang
Enhances
winch
License
MIT + file LICENSE
Maintainer
Lionel Henry <lionel at posit.co>
Materials
README , NEWS
NeedsCompilation
yes
Old Sources
rlang archive
Package Source
rlang_1.2.0.tar.gz
Published
2026-04-06
Reference Manual
rlang.html , rlang.pdf
Reverse Depends
AQuadtree , bistablehistory , eq5d , eyelinkReader , fxl , HEDA , HelpersMG , ldblock , matchMulti , matchr , mevr , microseq , optimalFlow , prophet , PRROC , PupillometryR , PupilPre , radEmu , saccadr , simITS , SKFCPD , triplesmatch , xtsum
Reverse Imports
a11yShiny , a5R , aae.pop , ABCDscores , abjutils , AbSolution , academictwitteR , accelEE , AcceptReject , accrualPlot , accucor , Achilles , acledR , activatr , actuary , actxps , adapt3 , adas.utils , additive , adepro , adheRenceRX , adj , adjclust , adjustedCurves , admiral , admiraldev , admiralmetabolic , admiralneuro , admiralonco , admiralophtha , admiralpeds , admiralvaccine , admixr , adnuts , adobeanalyticsr , adproclus , adrftools , adverbial , aeddo , aedseo , AEenrich , aelab , afcharts , afex , AFR , aftables , AgePopDenom , AgeTopicModels , ageutils , aggregateBioVar , aghq , agriutilities , agrobox , agrostab , ags , agua , agvgd , AHPWR , AIBias , aifeducation , airGRiwrm , AirMonitor , airnow , airpart , airship , airt , AIscreenR , aisdk , akc , alakazam , alarmdata , ale , alevinQC , alfred , alien , AlignLV , allofus , almanac , alookr , AlphaMissenseR , AlpsNMR , amadeus , amapGeocode , ambient , Amelia , ami , amp , amp.dm , amp.sim , amplican , amt , anabel , Analitica , AnanseSeurat , anansi , aNCA , and , andorR , Andromeda , AnimalSequences , animbook , animejs , aniSNA , ankiR , ANN2 , anndataR , annotater , annotatr , anomalize , AntClassify , AnthropMMD , AntibodyForests , AnVILGCP , AnVILWorkflow , aopdata , apa7 , apache.sedona , APackOfTheClones , APAlyzer , APCalign , APCinteraction , apexcharter , APIS , APL , aplotExtra , applicable , appsheet , apyramid , AquaBEHER , aquodom , arcgisgeocode , arcgislayers , arcgisplaces , arcgisutils , archive , arcpbf , arcpullr , areal , arg , arpr , ArrayExpress , arrow , artma , artpack , ARUtools , ArvindSt , askgpt , ASML , aspline , asremlPlus , assertions , assertr , assignPOP , assignR , ATE.ERROR , Athlytics , ATQ , atrrr , attempt , audubon , auk , authordown , AutoAds , autogam , autoharp , autoimport , autonomics , autoReg , AutoScore , autoslider.core , autostats , autothresholdr , autoTS , AutoWMM , AuxSurvey , avstrat , AWAggregator , awdb , azr , AzureAppInsights , AzureKusto , babelgene , babette , bacenR , badp , baguette , baizer , baldur , bambooHR , bandle , banffIT , banR , banter , barrel , bartcs , bartMan , baRulho , baseballr , basedosdados , baselinenowcast , bases , BaseSet , BasketballAnalyzeR , BatchSVG , batchtma , BATSS , bayesammi , BayesChange , bayesdfa , BayesERtools , bayesian , BayesianDEB , BayesianDisaggregation , BayesianLaterality , bayesiansurpriser , bayesics , BayesMallows , BayesMoFo , bayesmove , bayesnec , bayesplot , BayesPostEst , BayesPower , bayesQRsurvey , BayesSpace , BayesTools , baystability , bbknnR , bcdata , bdrc , bdsm , beadplexr , beastier , beastt , beautier , beaver , bedbaser , beezdemand , bench , benchmarkmeData , bennu , BERTopic , bertopicr , besthr , betaregscale , bettr , BFF , BFS , BGPhazard , biblioverlap , bidser , bidux , bigergm , bigMICE , bignum , BIGr , bigrquery , bigrquerystorage , billboarder , BindingSiteFinder , BiocAzul , BiocBook , BiocPkgTools , BiocSet , biocthis , biodosetools , BioGA , biogrowth , bioinactivation , biometryassist , biomod2 , BioMonTools , BioNERO , bioRad , bioregion , bioseq , biostats , BiostatsUHNplus , biovizBase , birddog , birdie , birdscanR , bitfield , bitmexr , bivarhr , BiVariAn , bivariateLeaflet , bizicount , blase , blastula , blends , blit , blob , BlockCov , blockr , blockr.core , blockstrap , blocs , blsR , blvim , bml , bmm , bnmonitor , bodsr , boiwsa , bonsai , bootnet , borealis , box.linters , box.lsp , boxly , boxr , boxTest , bpmnVisualizationR , brand.yml , brclimr , BRCore , BreastSubtypeR , bregr , brendaDb , BREW3R.r , brickster , bridgr , brightspaceR , BRINDA , brisk , brms , brms.mmrm , brokenstick , brolgar , broom , broom.helpers , brulee , bs4cards , bs4Dash , bsicons , bsitar , bskyr , bslib , bsocialv2 , bssm , bsynth , btw , bulkreadr , BulkSignalR , bullseye , bumbl , bunddev , bundle , bupaR , burnr , butcher , butterfly , BuyseTest , BVARverse , c2z , cacc , cachem , cageminer , CAGEr , calcite , calibrationband , calidad , calmr , camcorder , campfin , campsis , campsismod , camtrapdp , canadamaps , cancensus , cancerradarr , cansim , capesR , carbonr , card , cards , cardx , care4cmodel , caretEnsemble , carpenter , carrier , carsAlgo , cartograflow , cartographer , carts , cascadess , casimir , cassandRa , CATAcode , catalytic , catfun , catmaply , catool , catviz , causact , causal.decomp , causalDisco , causalDT , CausalGPS , causalOT , CausalQueries , cbcTools , cbioportalR , CBN2Path , CBNplot , cbpManager , CBTF , cccm , ccdR , CCI , CCMnet , ccmReportR , ccoptimalmatch , ccostr , ccpsyc , CDMConnector , cdrcR , CDSim , CEDMr , celaref , CellBench , cellGeometry , cellKey , censable , censcyt , censobr , censored , censusapi , CepalStatR , Cepo , cepumd , ceramic , cereal , ceRNAnetsim , Certara.ModelResults , Certara.R , Certara.VPCResults , Certara.Xpose.NLME , cfbfastR , cfdnakit , cfDNAPro , cft , cgam , cgmanalysis , ChangePointTaylor , chantrics , Characterization , chattr , chcd , checked , checkthat , cheese , chem16S , chemodiv , chessboard , chevron , childeswordfreq , childsds , chilemapas , chillR , chiOpenData , ChIPseeker , chk , choicedata , CHOIRBM , cholera , chopin , chores , chromote , chronicle , chronicler , chronochrt , chunked , cia , cicalc , cimir , CimpleG , circRNAprofiler , CircSeqAlignTk , circumplex , CiteFuse , citestR , citrus , cjar , cjbart , clap , clarify , ClassifyR , clc , cld , cleanepi , cleaner , CleaningValidation , clidatajp , cliff , climaemet , climatehealth , climodr , clinCompare , clinicalfair , clinicalsignificance , clinpubr , clock , clockplot , ClonalSim , cloudfs , CLRtools , CluMP , ClussCluster , ClustAssess , clusterGGM , clustermole , clusterProfiler , clustifyr , ClustImpute , clustMixType , ClusTorus , clustree , clustringr , cmdfun , cmhc , cmpsR , cms , cmstatr , cmstatrExt , cnefetools , coalitions , cobalt , cocoon , codebook , codebookr , CodelistGenerator , codified , codyna , cofad , cogeqc , coglasso , cohortBuilder , CohortCharacteristics , CohortConstructor , CohortGenerator , CohortMethod , CohortSurvival , CohortSymmetry , COINr , colleyRstats , collinear , ColOpenData , colorist , ColorNameR , Colossus , comapr , combinedevents , CoMiRe , COMIX , compareDF , compareMCMCs , COMPASS , CompensAID , comperank , comperes , ComPrAn , comtradr , concordance , concordexR , condathis , condformat , confidenceCurves , ConfidenceEllipse , conflicted , ConFluxPro , confMeta , conformalForecast , confoundvis , congress , CongressData , CoNI , connectapi , connectcreds , connector , connector.databricks , connectwidgets , conos , conover.test , conquestr , ConSciR , conserveR , consortr , ConsReg , constructive , contactsurveys , ContourFunctions , contrastable , contribution , contsurvplot , convergEU , ConversationAlign , cookiecutter , cookiemonster , cookies , CopernicusClimate , CopernicusMarine , copulaSim , CoreGx , corella , corncob , coro , corporaexplorer , correlationfunnel , corrr , corx , cosmosR , COTAN , countland , countsimQC , countyhealthR , couplr , covid19br , covidcast , cowplot , cowsay , cpam , cpsvote , crane , crawl , CrcBiomeScreen , crew , crew.aws.batch , crew.cluster , crimedata , crimeutils , CRISPRseek , crisprVerse , crmPack , CropBreeding , crosshap , crossmap , crossnma , crosstable , crossurr , crstools , crul , cSEM , csmGmm , CSOA , cspp , csquares , csvwr , CTexploreR , cthist , ctmva , ctoclient , cTRAP , ctrdata , ctrialsgov , ctxR , cubar , cubble , cubelyr , cucumber , cuda.ml , cuperdec , CuratedAtlasQueryR , curatedMetagenomicData , curatedPCaData , curatedTBData , customiser , cusumcharter , cutpointr , cvap , cvasi , cvCovEst , cvms , Cyclops , cylcop , cypress , CyTOFpower , CytoGLMM , cytoKernel , CytoMDS , cytominer , CytoPipeline , CytoSimplex , czso , d3po , dabestr , dados , DAISIEprep , DamageDetective , damidBind , dampack , Damsel , dandelionR , dann , daqapo , dar , dartRverse , data.validator , DatabaseConnector , datacleanr , datacult , datacutr , datadiff , dataMaid , datamedios , DataMetProcess , datamods , datamuseum , DataQualityDashboard , dataquieR , dataReporter , datareportR , dataRetrieval , datasusr , datazoom.social , datefixR , datos , dawaR , days2lessons , daySupply , dbGaPCheckup , dbglm , dbi.table , DBItest , dbmss , dbplot , dbplyr , dcce , dceasimR , dci , DCLEAR , dcm2 , dcmdata , dcmstan , dcurves , dcvar , ddpcr , dearseq , debkeepr , decemedip , DecisionDrift , decisionpaths , DeclareDesign , decompositionLE , decoupleR , decp , deeptime , deflist , DEGreport , deident , delaydiscount , delayed , deliberr , delimtools , delma , deltaccd , deltatest , demodelr , denguedatahub , denim , densityarea , dentomedical , dependentsimr , DEplotting , deprivateR , DESA , describedata , descriptio , descriptr , descstat , descsuppR , descsuppRplots , desctable , deseats , designit , DesignLibrary , desirability2 , desplot , destiny , detourr , detrendr , devtools , dexter , dextergui , df2yaml , dfeR , dfoliatR , DFplyr , dgpsi , DHS.rates , DHSr , diagFDR , DiagrammeR , dials , dibble , diceplot , Dict , did2s , didec , DIDHAD , DIDmultiplegt , diegr , DIETCOST , diffdfs , diffEnrich , diffeR , dilp , DImodelsVis , dinoR , dipm , dipsaus , dir2json , directAgeStd , DirectEffects , discAUC , disclosuR , discoveR , discretes , discrim , diseasystore , DisImpact , disprofas , Distance , distcomp , distionary , distplyr , Distributacalcul , distributional , distributions3 , distrr , dittodb , divent , diversityForest , DIVINE , divseg , diyar , dlim , dlookr , dlr , dm , dmutate , doBy , docorator , doctest , dominatR , donutsk , DOtools , dots , dotsViolin , dotwhisker , doubletrouble , douconca , DownBallotR , downlit , dowser , dpasurv , dpdr , dpkg , dplyr , dpm , DPQBootstrap , dr4pl , drake , dreamer , dreamlet , driveR , DRomics , drugDemand , DrugExposureDiagnostics , drugfindR , DrugUtilisation , DSAIDE , DSAIRM , dsims , DSIR , dsp , DspikeIn , dspline , DSSAT , dst , dsTidyverse , dsTidyverseClient , dStruct , DTEAssurance , dtGAP , dtplyr , dtrackr , dtwclust , duckplyr , duckspatial , duet , dumbbell , dunlin , dunn.test , DuplexDiscovereR , dupree , DUToolkit , dverse , dwctaxon , dymo , dynamicpv , dynamite , dynConfiR , dyngen , dynprog , dySEM , eam , easier , easy.utils , easyalluvial , EasyCellType , easycensus , easydb , easylabel , easynem , easyPubMed , easyr , easyRaschBayes , easyreporting , easysurv , ebirdst , ebnm , ecan , echarts4r , echoice2 , echor , echos , ecocbo , ecochange , EcoCleanR , ecocomDP , ecode , EconCausal , econid , econtools , ecorisk , EcotoneFinder , ECOTOXr , edar , EDCimport , edeaR , edecob , edfinr , edgarfundamentals , edibble , ediblecity , editbl , eDNAfuns , educabR , edwards97 , EFAtools , EFSATools , EGM , egor , eHDPrep , eiExpand , elaborator , elixir , ellipsis , ellmer , EloOptimized , embed , emburden , emdi , emln , emmeans , emodnet.wfs , emojifont , EMOTIONS , EmpiricalCalibration , emreliability , emuR , encryptr , enderecobr , ENMeval , enrichplot , ensModelVis , entropart , EntropicStatistics , envsetup , envvar , eoffice , eph , epicmodel , epiCo , epidatr , epidict , EpiForsk , epikit , EpiMix , EpiModel , EpiNow2 , epiparameter , epiSeeker , episomer , EpiStandard , epitabulate , epitrix , epiviz , epmfd , epo , epocakir , Epoch , eponge , epoxy , eq5dsuite , EquiTrends , era , ergm , ergm.multi , ernm , ErrorTracer , ERSA , escheR , esci , eSDM , esem , esquisse , estatapi , estimatr , EstimDiagnostics , esvis , esviz , etl , eufmdis.adapt , Eunomia , europepmc , eurostat , evalHTE , evalITR , eventPred , EventPredInCure , eventreport , eventstudyr , EvidenceSynthesis , evinf , evprof , evsim , exampletestr , excessmort , excluder , ExPanDaR , expDB , expertsurv , expirest , explore , ExploreModelMatrix , expstudy , extraChIPs , extrasteps , extraSuperpower , ExtremeCI , exuber , eye , eyeris , eyetools , eyetrackingR , ez , EZbakR , ezcox , EZFragility , ezplot , f1dataR , fable , fable.ata , fable.prophet , fabletools , fabR , fabricatr , fabricQueryR , facerec , factoextra , factory , factR , faers , FAfA , fahb , fairGATE , familiar , Families , famish , fanyi , farr , farrell , FARS , fasster , fastadi , fastGLCM , FastJM , fastkqr , FastKRR , fastml , fastplyr , fastqcr , fastreg , FastRet , fastRG , fastRhockey , fastTopics , fastTS , FastUtils , faux , fauxnaif , FAVA , favawesome , favr , fcall , fcaR , fcci , fdacluster , fdasrvf , fdid , fdp , feasts , featdelta , FeatureExtraction , fect , fEGarch , felp , feltr , fenr , ferrn , ffiec , ffm , ffp , ffscrapr , fgeo , fgeo.analyze , fgeo.plot , fgeo.tool , fhircrackr , fidelius , fido , fiery , figma , filecacher , filesstrings , filibustr , filtro , FIND , FindIT2 , findn , findSVI , finetune , finnts , fio , fireexposuR , fireproof , firesafety , firesale , firestorm , FishDiveR , fishmechr , fishtree , fishualize , fitbitr , fitdistrplus , fitlandr , fitzRoy , fixes , fkbma , flashlight , fledge , flevr , flex , flexCausal , flexCountReg , flexFitR , flexlsx , flexsurv , flextable , FlickrAPI , flipr , flowchart , flowcluster , flowGate , FlowSOM , flowTime , fluxfixer , fluxible , FluxSeparator , fmesher , FMM , foghorn , fonctionr , fontawesome , foodwebr , footBayes , footprint , forcats , forcis , FoRDM , forecasteR , ForeComp , foreSIGHT , forestat , forestecology , ForestElementsR , forestly , forestmangr , forestmodel , forestsearch , forge , forgts , ForIT , formods , forstringr , FossilSim , fPASS , fqacalc , fqar , fr , fractalforest , fRagmentomics , framecleaner , fredr , frenchdata , freqtables , frictionless , froggeR , frontmatter , frscore , FSinR , FSK2R , fsr , fst4pg , ftExtra , FuelDeep3D , funModeling , funneljoin , FunnelPlotR , furrr , FuzzyClass , fwb , gadget3 , galah , galaxias , gamma , gammaFuncModel , gander , ganttify , gargle , garma , gateR , GaussSuppression , GCEstim , gcplyr , GCPtools , GDAtools , gdim , GDPuc , gecko , gemma.R , gen5helper , genekitr , geneticae , GeneTonic , geneviewer , genieBPC , GenomeAdmixR , GenomicDataCommons , GenoTriplo , geocodebr , geoDeltaAudit , geodiv , geofacet , geofi , geoheatmap , geomander , GeomArchetypal , geomtextpath , geomultistar , GeomxTools , geotargets , GeoTox , germinationmetrics , gestalt , getRad , geyser , gfoRmulaICE , gg1d , gg4way , ggalign , ggalignment , ggalluvial , GGally , gganimate , ggarchery , ggarrow , ggauto , ggautomap , ggbio , ggblanket , ggblend , ggborderline , ggbrain , ggbreak , ggcharts , ggcleveland , ggcorrheatmap , ggcyto , ggdag , ggdiagram , ggdibbler , ggdist , ggDNAvis , ggDoubleHeat , ggeasy , ggEDA , ggerror , ggetho , ggfacto , ggfields , ggflowchart , ggfocus , ggforce , ggforestplotR , ggformula , ggfoundry , ggfun , ggfx , gggda , gggenes , gggenomes , ggguides , ggh4x , gghdx , gghexsize , gghighlight , gghinton , gghourglass , ggimage , ggincerta , gginference , gginnards , ggInterval , ggip , ggiraph , gglgbtq , gglinedensity , gglm , gglycan , gglyph , ggmanh , ggmap , ggmapcn , ggmapinset , ggmice , ggmRSCU , ggmuller , GGoutlieR , ggpackets , ggpage , ggparty , ggpath , ggpattern , ggpca , ggpcp , ggpedigree , ggplate , ggplot.multistats , ggplot2 , ggplotify , ggpmisc , ggPMX , ggpointless , ggpolar , ggpop , ggpp , ggprism , ggpubr , ggquickeda , ggragged , ggrain , ggraph , ggredist , ggrefine , ggrepel , ggreveal , ggsankeyfier , ggsc , ggsci , ggscribe , ggseg.formats , ggseg3d , ggsem , ggseqplot , ggshadow , ggside , ggskewboxplots , ggsoccer , ggspatial , ggspectra , ggstackplot , ggstance , ggstar , ggstats , ggstatsplot , ggsurveillance , ggsurvfit , ggtangle , ggtern , ggtext , ggtibble , ggtime , ggtrace , ggtranslate , ggtree , ggtreeExtra , ggtreeSpace , ggupset , ggvenn , ggvis , ggWebGL , ggwidth , gh , ghclass , GHCNr , GHRexplore , GHRmodel , ghypernet , gibasa , gibble , GillespieSSA2 , gips , gipsDA , GISSB , GitAI , GitStats , glinvci , glmGamPoi , GLMMcosinor , glmSparseNet , globaltrends , gloBFPr , glorenz , GloScope , glossr , glycoTraitR , glyparse , glyrepr , gmailr , gmgm , Gmisc , gMOIP , gmoTree , gms , gmwmx2 , GNAR , goatea , godley , GOfan , goldfish , goldilocks , golem , gompertztrunc , Goodreader , googleAnalyticsR , googleAuthR , googledrive , googlenlp , googlesheets4 , GOSemSim , gpss , gptstudio , GPvam , GrafGen , grandR , grangersearch , GRaNIE , graphicalVAR , graphite , gratia , gRaven , gravitas , gravity , greenSD , Greg , gridpattern , gridtext , grizbayr , grmtree , groupdata2 , grouper , groupr , growR , growthcleanr , GrowthCurveME , grwat , GSABenchmark , gscramble , gsDesign , gsDesignTune , GSEAmining , gseries , gsMeanFreq , gson , gspcr , gt , gtable , gtakeout , gtexr , gtExtras , gtexture , gto , gtreg , gtregression , gtsummary , guardianapi , guideR , GUIDEseq , guildai , guiplot , gunsales , gutenbergr , gvcR , gwasrapidd , GWlasso , h3o , h3sdm , haldensify , halfmoon , hammers , Haplin , hardhat , harmony , harrietr , hatchR , havel , haven , hbamr , hcruR , HCUPtools , hdf5r.Extra , hdme , headliner , healthbR , healthdb , healthequal , healthyR , healthyR.ai , healthyR.data , healthyR.ts , heapsofpapers , heddlr , hedgehog , heemod , heiscore , helixvis , henna , hera , hermes , heumilkr , hexify , hexSticker , hfhub , HHBayes , hhmR , HicAggR , HiCDCPlus , hicream , hierNest , highcharter , highlighter , hipecR , HIPPO , hipread , historicalborrow , historicalborrowlong , histoslider , HLMdiag , hmde , HMDHFDplus , hmer , hmetad , hms , Hmsc , hmstimer , holideh , holodeck , HonestDiD , hoodscanR , hoopR , horsey , hours2lessons , howzatR , hpiR , htaBIM , htmltools , httptest2 , httr2 , hubEnsembles , HuBMAPR , hubUtils , hurricaneexposure , huxtable , hybridEHR , HybridExpress , HybridMicrobiomes , hydrodownloadR , hydroloom , HyMETT , hypeR , hyperSpec , HYPEtools , hypothesis , i3pack , iadf , iai , ibawds , ibb , ibger , IBMPopSim , ICD10gm , icecdr , icecream , ICEHmeasures , icesDatsu , icesSAG , icesTAF , icesVocab , iCNV , iCOBRA , icpack , ideal , idealstan , ideanet , IDEATools , idiogramFISH , idionomics , idmact , idpr , igcop , igraph , iheiddown , ihpdr , ihsMW , ijtiff , il.cbs.muni , ILRCM , imageRy , imageTCGA , imageTCGAutils , imaginator , imcRtools , IMD , imfweo , imgrec , ImML , immunarch , immunaut , immundata , immunogenetr , immunotation , impactflu , impactr , impectR , implyr , important , imputeREE , imt , incase , incidence2 , IncidencePrevalence , inctools , incubate , indiedown , industRial , ineptr2 , infer , influxdbr , InjurySeverityScore , injurytools , inkaR , inlabru , inlamemi , inlcolor , inough , inphr , insee , inshiny , instantiate , insulin.secretion , integrity , intensegRid , InteractionPoweR , interactionRCS , interactions , InterCellar , interfacer , interpretCI , intRinsic , invctr , invitroTKstats , invivoPKfit , iNZightPlots , iNZightTools , iNZightTS , IOBR , iotables , iotarelr , ipaddress , ipeadatar , ipeaplot , IPEDS , IPEDSuploadables , ipmr , ipolygrowth , ipumsr , ir , iraceplot , irpfR , IRTM , irtQ , irtsim , ISAnalytics , iSEEfier , Isinglandr , isoband , isobxr , isomiRs , isoorbi , istatR , iterors , itraxR , itscalledsoccer , itsdm , ivolcano , ivs , jackstrap , jagstargets , JANE , janitor , janusplot , japanstat , jentre , jetty , jinjar , jmastats , jmvcore , jobqueue , joinpointR , joinspy , JointAI , jointCompRisk , JointFPM , joyn , jpcity , jpgrid , jpmesh , jpstat , jrSiCKLSNMF , JSmediation , jsonstat , jstable , jtools , juicedown , JWileymisc , k5 , kanjistat , kappaGold , karyotapR , katdetectr , kDGLM , keras , keras3 , kerasnip , kernelPhil , kesernetwork , keyATM , keyed , keyholder , kgrams , kindisperse , kindling , kissDE , kitesquare , knfi , knowYourCG , kntnr , KoboconnectR , kokudosuuchi , konfound , KrakenR , kssa , kuzco , labelled , lablaster , lactater , lacunr , LAD , ladder , LAGOSNE , laminr , lang , lans2r , laOpenData , lares , later , LATERmodel , latrend , lavaanPlot , lavinteract , lay , layer , lazyeval , lcmsPlot , lcra , lcsm , leaf , leaflet , learnr , ledger , lefko3 , LegATo , legendry , lehdr , lemur , lenses , lessSEM , levitate , licoread , lifecycle , LifeInsureR , LifemapR , LightLogR , lightparser , likelihoodTools , LikertMakeR , lillies , lime , lineagefreq , linelist , link , linne , lipidr , LipidTrend , lisaClust , listcomp , listr , litteR , llmclean , llmcoder , LLMR , lme4 , LMMstar , loadeR , lobbyR , lobstr , localIV , locuszoomr , loewesadditivity , LOGAN , logrx , LongDat , longevity , longitudinalcascade , loon.ggplot , lrstat , LRTesteR , lsirm12pl , LSTbook , LTASR , LTFGRS , LTFHPlus , luz , lvmisc , maaslin3 , mable , MachineShop , macrosyntR , madgrad , madshapR , maestro , magclass , MAGMA.R , MagmaClustR , MAICtools , maidr , MAIHDA , MainExistingDatasets , makemyprior , malariaAtlas , malaytextr , maldipickr , mall , manureshed , mapbayr , mapboxapi , MAPCtools , mapgl , mapindia , mapindiatools , Mapinguari , mapmixture , MapperAlgo , mappp , margaret , marginaleffects , mariner , mark , markets , markmyassignment , markovmix , marquee , marr , mascarade , maskr , matahari , MatchIt , matchmaker , MatchThem , maths.genealogy , matricks , MatrixQCvis , matrixset , matriz , matsbyname , matsindf , maxcombo , MazamaCoreUtils , MazamaLocationUtils , MazamaSpatialPlots , MazamaSpatialUtils , MazamaTimeSeries , mccount , mcmsector , mcmsupply , mcp , MCPModBC , mcptools , mcradds , mcStats , mcvis , mdbplyr , MDSvis , meantables , measr , MeasurementDiagnostics , measureR , medfateland , medrxivr , meetupr , melidosData , memes , memoise , memoria , mergenstudio , mergingTools , messaging , messy , meta , metabCombiner , metaboData , MetaboDynamics , MetabolomicsBasics , metabom8 , metacoder , metaconfoundr , metacore , metadeconfoundR , MetaDose , metagam , metagroup , metalite , metalite.sl , MetAlyzer , metamorphr , metan , MetaNet , metanetwork , metaplot , metapower , MetaProViz , MetaScope , metasnf , metasplines , metatools , MetaUtility , metawho , meteoland , meteospain , methcon5 , MethodOpt , MethReg , MetMashR , MetNet , metR , metrica , MetricGraph , mfcurve , mfdb , mfrmr , mgi.report.reader , mgwrsar , mia , MIAmaxent , miaViz , MIC , miceafter , microbial , microbiomeExplorer , MicrobiotaProcess , microCRAN , microdiluteR , microeco , microinverterdata , micropan , midasHLA , midi , midnight , midoc , midr , mighty.metadata , migrate , mikropml , mildsvm , MIMER , mineSweepR , mini007 , minorparties , mintyr , mipplot , MIRit , misc , MiscMetabar , missCompare , missSBM , mist , mistyR , mitre , mixedbiastest , MixedPsy , MixMashNet , mixOmics , MixOptim , mixpoissonreg , mixtur , mixvlmc , mizer , mKBO , MKdescr , mkin , MKinfer , MKpower , ml , mlbplotR , MLCausal , mlfit , mlflow , mlmodels , mlmoderator , mlr3fairness , mlstrOpalr , mlts , mlVAR , MLwrap , mmequiv , mnirs , mobileRNA , mockr , mockthat , model4you , modeldata , modeldb , modelenv , modelr , modeltime , modeltime.ensemble , modeltime.resample , modeltuning , moderndive , ModEstM , modsem , MoleculeExperiment , MOMA , momentuHMM , monaLisa , monashtipr , mongopipe , monoClust , MonotonicityTest , MOODE , moodlequiz , moodleR , Moonlight2R , morepls , morphemepiece , mort , mortAAR , mortar , mortSOA , mosaic , mosaicCalc , mosaicCore , mosdef , MOSim , motherduck , motifr , motifTestR , mousetrap , move2 , movedesign , movegroup , movementsync , mpathr , mpathsenser , mpower , MRG , mrgsim.sa , mrgsolve , mrIML , MRStdCRT , MRStdLCRT , MSA2dist , msgr , msigdbr , MSnID , mspms , MSPrep , msqrob2 , MsQuality , msSPChelpR , MSstats , MSstatsPTM , mstATA , mstate , MSTest , mtaOpenData , mtdesign , MTLR , mtscr , mulea , multibias , multibiasmeta , multibreakeR , multiCCA , multid , multidplyr , multifear , multiGSEA , multilevelmod , multimedia , multimorbidity , multinma , MultiObjMatch , multipleITScontrol , MultiRNAflow , MultiscaleSCP , MultiSpline , multitool , MultiTraits , multivarious , multiverse , mupet , muscat , musicatk , mutscan , MutSeqR , muttest , mvalpha , mverse , mvgam , mvMonitoring , mvnimpute , mwlaxeref , mwmap , mxfda , mxnorm , mycaas , myrror , naijR , NaileR , name , nandb , naniar , NanoMethViz , nanostringr , nasapower , nascaR.data , natstrat , navigatr , NBDCtools , nbTransmission , ncaavolleyballr , ncappc , NCC , ncmeta , nearBynding , necountries , NeEDS4BigData , nemsqar , neonSoilFlux , neonUtilities , neotoma2 , nestedcv , nestr , netcom , NetCoupler , netgsa , netmap , netseer , netSEM , NetworkChange , NetworkExtinction , networkscaleup , neuralGAM , neuromapr , neuroUp , nevada , nfl4th , nflfastR , nflplotR , nflreadr , nflseedR , nflverse , ngme2 , ngramr , ngsReports , nhanesdata , nhdR , NHSRplotthedots , NHSRwaitinglist , niarules , nichetools , NiLeDAM , nipalsMCIA , nixtlar , nlist , nls.multstart , nmarank , Nmisc , nncc , noah , NobBS , nofrills , nomisdata , nomnoml , nonmemica , nordstatExtras , normaliseR , normfluodbf , normref , notionapi , NOVA , nowcastr , NPARC , NPBayesImputeCat , npde , npi , nplyr , NPStability , nrba , NUETON , nuggets , nullranges , nuts , NVAR , nycOpenData , nysOpenData , nzffdr , nzilbb.vowels , OAtools , obliqueRSF , oceanexplorer , oCELLoc , octopusR , ODataQuery , odbc , oddnet , oddsapiR , ODRF , odyssey , officedown , offsetreg , OhdsiReportGenerator , OhdsiShinyAppBuilder , ohun , ohvbd , ojsr , okxr , OlinkAnalyze , OmicsMLRepoR , omicsTools , omicwas , OmnipathR , omock , OmopConstructor , omopgenerics , omophub , OmopOnSpark , OmopSketch , OmopStudyBuilder , OmopViewer , ompr , omsvg , ONAM , onbrand , OncoBayes2 , OncoSubtype , One4All , onemapsgapi , OneSampleLogRankTest , OneSampleMR , OnlineSurr , Open.Visualization.Academy , openair , openairmaps , openaiRtools , openalexR , openappr , opencage , opencpu , openeo , openFDA , openmpp , openNCAI , openscoring , openVA , opGMMassessment , opinAr , oppr , optedr , optic , opticskxi , OptimalBinningWoE , optimall , optweight , OralOpioids , Orangutan , orbital , orbweaver , ordered , orderly , ordinalsimr , ordr , ORFID , organizr , OrgHeatmap , orthanc , orthos , osdc , osfr , otpr , OtsuFire , outstandR , overtureR , overviewR , OVtool , owidapi , OxSR , oysteR , oystermapR , pacta.loanbook , pacta.multi.loanbook , paddleR , padr , pagoda2 , pairwiseLLM , palaeoSig , paletteer , palettes , pam , pammtools , PAMpal , PAMscapes , pandemonium , pandoc , panelr , panelsummary , PanomiR , parafac4microbiome , ParamANOVA , paran , parasiteR , pargasite , parquetize , parsel , parsermd , parsnip , partialised , partialling.out , particles , partition , partR2 , parttree , partycoloR , passt , PAST , patchwork , patentr , path.chain , pathling , PatientLevelPrediction , PatientProfiles , patrick , PAutilities , pcpr , pcvr , PDATK , pdp , pdxTrees , peacesciencer , peakCombiner , PEIMAN2 , pems.utils , penppml , pense , pepdiff , PepMapViz , permubiome , personr , peruse , PesticideLoadIndicator , pestr , pguIMP , phacking , PHEindicatormethods , PhenoSpectra , PhenotypeR , PHENTHAUproc , phinterval , PhosR , photobiology , photosynthesis , phsmethods , phsopendata , phutil , phylepic , phylosamp , pickmax , piecemaker , piecemeal , piecenorms , piecepackr , PieGlyph , piglet , pillar , pins , pioneeR , pipr , pivotea , piwikproR , pixieweb , pixr , PJCcalculator , PKbioanalysis , pkgdown , pkggraph , pkgload , pkgnet , pkmapr , PKNCA , placematchr , planscorer , plater , player , pleioh2g , PLNmodels , plotbb , plotcli , plotdap , PlotFTIR , plotgardener , plotGrouper , plotlsirm , plotly , PlotNormTest , plotor , plotROC , plotthis , plsmmLasso , plsmod , plumber , plumber2 , plumbertableau , plume , plutor , plyinteractions , plyranges , plyxp , pmev , pmrm , PMScanR , pmxcode , PnT , pointblank , poisonfrogs , poissonreg , polimetrics , polished , pollster , polmineR , polyglotr , polymatching , polypoly , POMA , pomcheckr , pool , pooledpeaks , PoolTestR , PopComm , PopGenHelpR , poppr , PopPsiSeqR , PopulateR , populR , poputils , portalr , portfolioBacktest , portvine , posDemux , postcard , posterior , potions , power.transform , powerbrmsINLA , powerjoin , powerly , powerNLSEM , powerprior , powRICLPM , PowRPriori , ppcseq , ppmf , pprof , precisely , precmed , precommit , precrec , precviasBR , predict3d , predictNMB , predictoR , predRupdate , prefio , prefviz , pregnancy , presenter , pretestcad , prettyPanelMatch , prevtoinc , pricesensitivitymeter , prioriactions , prioritizr , priorsense , prnsamplr , proActiv , probably , proBatch , ProbBreed , processcheckR , processmapR , processpredictR , prodigenr , prodlim , ProduceR , profile , profvis , projectLSA , projects , projoint , promises , propensity , protein8k , ProteinGymR , ProteoBayes , ProteoDisco , protGear , protti , proustr , provolleyballr , prozor , prt , pseudobibeR , pseudoCure , psHarmonize , psm3mkv , psmineR , psre , psycCleaning , psychmeta , psychonetrics , psyntur , ptable , ptairMS , PTSDdiag , ptvalue , PublicationBias , pubmedtk , pubrplot , puls , PUMP , PurpleAir , purrr , pushoverr , pvda , pxmake , pysparklyr , qgisprocess , qmj , qmtools , qPLEXanalyzer , qsvaR , qtkit , qtl2ggplot , qtl2pattern , qtl2pleio , QTLExperiment , quadkeyr , quadVAR , QualityMeasure , quallmer , qualmap , qualtRics , quanteda.tidy , quantilogram , quantiseqr , quarto , quartose , queryBuilder , querychat , questionr , QuickExplore , QuICSeedR , quid , r2dii.analysis , r2dii.match , r2dii.plot , r2mlm , r2r , R4GoodPersonalFinances , r4pde , r4sub , r4subcore , r4subprofile , r4subrisk , r4subscore , r4subtrace , r5r , racademyocean , Racmacs , RadialVisGadgets , radiant.basics , radiant.data , radiant.model , radiant.multivariate , radsafer , Radviz , ragnar , rai , RAIDS , rainette , rairtable , rando , random.cdisc.data , randomizeR , RandomWalker , randotools , RankMap , Rapi , rapidcodeR , rapsimng , RAQSAPI , rar , raretrans , rassta , RastaRocket , rater , rATTAINS , ravepipeline , rawDiag , rb3 , RBaM , Rbearcat , rbedrock , RBesT , rbgm , rbmiUtils , rbrsa , rbw , Rcatch22 , rcbayes , rcdo , rChEA3 , rCISSVAE , rcldf , RClimacell , RcmdrPlugin.KMggplot2 , rcoder , rcoins , RCPA , Rcpi , RcppJagger , rcrisp , rcrossref , RCT , RCTS , Rcurvep , rdcmchecks , rddi , rdecision , rdhs , rdomains , rdss , rdtLite , react , reactable.extras , read.abares , readabs , readapra , readmit , readosense , readr , readrba , readsdr , readSX , readtextgrid , ready4 , readyomics , reappraised , rearrr , recastlessons , recipes , reconstructKM , REDCapDM , REDCapR , REDCapTidieR , REddyProc , REDI , redist , redistmetrics , redquack , refdb , refitgaps , Rega , RegDDM , reghelper , RegimeChange , regions , regport , RegrCoeffsExplorer , regress3d , regressinator , regressoR , reliabilitydiag , rempsyc , RepeatedHighDim , repfun , reportRmd , reprex , reqres , rescomp , reservoirnet , reservr , resourcecode , respirometry , resquin , ResultModelManager , rethnicity , reticulate , retry , reval , reveneraR , ReviewR , reviser , rextendr , rfars , rFIA , rfishbase , RFishBC , rfm , rfPermute , rfriend , RGCCA , rgeomstats , Rgff , rgoogleads , RGraphSpace , RiboCrypt , ribor , ricci , rice , Ricrt , rict , ricu , riem , rifi , rifiComparative , rifttable , Rigma , rigvf , riingo , Rilostat , ripc , risk.assessr , riskCommunicator , riskdiff , risks , riverconn , RivRetrieve , rjaf , rjtools , rKolada , rliger , rlinkedinads , rlowdb , rmangal , RMariaDB , rmcmc , rmdd , rmdpartials , Rmfrac , rMIDAS2 , RMM , Rmonize , rmsMD , RNAseqCovarImpute , RNeXML , rnpn , roadoi , roads , RobinCar , robis , RoBMA , RobMixReg , robotoolbox , RoBSA , robust.prioritizr , robustHD , robustlmm , RobustMediate , rockx , roclang , ROCnGO , rocnp , rolap , rollama , rollout , rollup , romic , ropenblas , rosario , rosm , rotl , roundwork , routr , roxygen2 , roxygen2md , rPACI , rpact , Rpadrino , rpaleoclim , rPandas , rplanes , RplotterPkg , RPresto , RprobitB , rredlist , Rrepest , rrobot , rrtable , Rsagacmd , rsahmi , rsample , rsconnect , RSDA , rsf , rsi , rsimsum , rspacer , RSQLite , rSRD , RStanTVA , rstatix , rstudio.prefs , rsurveycto , rsurvstat , rsyntax , rtern , rtestim , rticulate , RTL , rTPC , RtsEva , rTwig , rtypeform , ruler , rules , rUM , ruminate , rurality , rvec , rvest , rvg , rwig , rytstat , s3 , S7schema , sabre , sae.projection , saebnocov , saeczi , saemix , saens , saeTrafo , safeframe , safestats , safetensors , SAiVE , salesforcer , salmonMSE , sampbias , sampcompR , samplingin , SangerTools , sapfluxnetr , saros , saros.base , sasquatch , sass , sbm , sboost , scaledescr , scales , scan , scater , scatterpie , sccomp , sccore , scCustomize , SCDA , SCDB , scdhlm , scDiagnostics , scDotPlot , scECODA , scenes , scenfire , scf , scFeatureFilter , SCGLR , schematic , schex , scHiCcompare , scholar , scholidonline , SchoolDataIT , scifer , scimetr , scimo , scLang , scMultiSim , scoper , scorematchingad , SCoRES , scpi , scPipe , scPloidy , scplot , ScreenR , screenshot , scregclust , scRepertoire , scriptName , scrutiny , sctransform , sdbuildR , sdcHierarchies , sdcTable , SDModels , sdmTMB , SDMtune , sdtm.oak , sdtmval , seahtrue , SeaSondeR , secrettext , secsse , secuTrialR , sedproxy , SeedMaker , segclust2d , SEIRfansy , SelectBoost.beta , SelectBoost.gamlss , selenider , selenium , SemanticDistance , semboottools , semfindr , semhelpinghands , semlbci , SEMPLR , semptools , senseweight , SensIAT , sensobol , sensortowerR , seqCAT , seqHMM , seqtrie , sequential.pops , serocalculator , SerolyzeR , serosv , SESraster , SETA , Seurat , SeuratObject , sevenbridges2 , sfcr , sfd , sfdep , sfhotspot , sfnetworks , sg , sgboost , sglr , sgplot , shadowtext , shadowVIMP , shapr , shapviz , SHARK4R , shazam , sherlock , shewhartr , shide , shiny , shiny.destroy , shiny.gosling , shiny.react , shiny.router , shiny.telemetry , shinyauthr , shinybrms , shinyChakraUI , shinychat , shinyCohortBuilder , shinyepico , shinyExprPortal , shinyGizmo , shinyHugePlot , shinyInvoice , ShinyItemAnalysis , shinyjqui , shinylive , shinyloadtest , shinymeta , shinymodels , shinymrp , shinyNotes , shinyOAuth , shinyobjects , shinyQueryBuilder , shinyreprex , shinytest , shinytest2 , shinytesters , shinyvalidate , shinyWidgets , ShortForm , shrinkGPR , SIAmodules , SIAtools , SigBridgeRUtils , sigminer , Signac , signs , silicate , silviculture , sim.BA , simaerep , simDAG , SimEngine , simET , simglm , SimKid , simlandr , SimNPH , simodels , simPIC , SimpleUpset , simrel , simstandard , SimSurvey , simts , simulist , SingleCaseES , singleCellTK , SingleMoleculeFootprinting , SISIR , sistec , sistmr , sitar , sixtyfour , SiZer , sjmisc , sjPlot , sjtable2df , skater , SkeletalVis , sketch , sketchR , skimr , skytrackr , slackr , slap , SLCARE , slider , sloop , slxr , SmallCountRounding , smallstuff , SmartPhos , smartsheetr , smcfcs , smoothic , SmoothPLS , smplot2 , smvr , snapcount , snowflakeauth , Sobol4R , socialmixr , socialranking , socialrisk , sociome , socratadata , socviz , softwareRisk , soilFlux , soiltestcorr , Sojourn , SOMbrero , SOMnmR , sortable , sorvi , sosta , sourcoise , SpaCCI , SpaceMarkers , SpaceTrooper , spada , spanishoddata , SpaNorm , spareg , sparklyr , sparklyr.flint , sparklyr.nested , sparkxgb , sparqlr , sparsediscrim , sparsegl , sparseR , sparsevar , sparsevctrs , SpatialCPie , SpatialFeatureExperiment , spatialGE , SpatialKDE , spatialLIBD , SpatialRDD , spatialRegroup , spatialRF , spatialrisk , spatialsample , spatPomp , spatsoc , spbabel , spDates , spdgp , specr , spect , spectrakit , spectralR , Spectran , speechbr , SPIAT , SPIChanges , spicy , spicyR , spind , spinebil , splatter , splicelogic , splinetrials , splithalfr , spnaf , SpNeigh , SPONGE , SportMiner , sportyR , SpotClean , spotifyr , spRingsteen , SPRT , spsur , SQIpro , sqlhelper , SqlRender , sqltargets , squat , sRdpData , sreg , srppp , SRscore , srvyr , ssd4mosaic , ssdtools , SSEparser , sSNAPPY , sspm , ssrn , SSVS , stability , staccuracy , stackgbm , stacks , STADyUM , stagedtrees , stampr , standR , staRdom , staRgate , starling , stars , starschemar , starsTileServer , starter , starvz , statAfrikR , statAPA , statar , statcheck , states , statgenGWAS , statgenGxE , statgenHTP , statgenIBD , statgenMPP , statgenSTA , statioVAR , statnipokladna , statsExpressions , StatsTFLValR , statswalesr , stbl , stdmod , stenographer , stenR , stevemisc , stevethemes , stickyr , SticsRFiles , STMotif , stochLAB , stoichUtilities , stors , stplanr , strand , strandCheckR , strata , stratamatch , StratifiedMedicine , streamy , streetscape , strex , stringr , structenforcement , StructuralVariantAnnotation , stxplore , styler , subincomeR , subscreen , substackR , subtools , sudachir , sugarbag , sugrrants , sumer , sumExtras , summarySCI , summarytabl , SUMO , sumup , sumvar , SunsVoc , SuperCell , supernova , supersigs , superspreading , supportR , surtvep , survalis , surveil , surveycore , surveydata , surveyexplorer , SurveyStat , survinger , survkl , survminer , survParamSim , survstan , susographql , suwo , svaNUMT , svaRetro , SVARtca , SveltePlots , svgedit , svglite , svMisc , SVP , svrep , swaprinc , sweep , swfscDAS , swfscMisc , SWTools , symphony , SynergyLMM , syntenet , synthesisr , SynthETIC , syrup , sysAgNPs , Sysrecon , systemPipeShiny , syuzhet , tabbycat , table.express , tablecompare , tablespan , tablet , tabnet , tabpfn , tabs , tabshiftr , tabularmaps , tabulator , tabxplor , tadar , tailor , tall , tame , tanggle , tarchetypes , tardis , targeted , targets , taskqueue , tatooheene , taxa , taxadb , taxdiv , taxizedb , taylor , tbl2xts , tbrf , tcgaViz , tcl , tclust , tcpl , tdarec , tdcmStan , teal , teal.code , teal.data , teal.reporter , teal.slice , teal.transform , tealeaves , tectonicr , telraamStats , tepr , term , tern , tern.mmrm , TernTables , terrainr , test.assessr , testdat , TestGenerator , testthat , text , text2map , textrecipes , tf , tfdatasets , TFEA.ChIP , tfestimators , tfevents , tfrmt , tfrmtbuilder , tfruns , theft , theftdlc , thematic , themis , ThermalSampleR , TheseusPlot , thisutils , thredds , thurstonianIRT , tibble , tibbletime , tibblify , tickr , tidier , tidyactuarial , tidyAML , tidyaudit , tidybayes , tidybins , tidyboot , tidybulk , tidyCDISC , tidycensus , tidycensuskr , tidychangepoint , tidycharts , tidyclust , tidycmprsk , tidycomm , tidyCoverage , tidydelta , TidyDensity , tidydr , tidyEdSurvey , tidyestimate , tidyexposomics , tidyextreme , tidyfinance , tidyfit , tidyFlowCore , tidyfun , tidygam , tidygate , tidygeoRSS , tidygraph , tidyHeatmap , tidyheatmaps , tidyhte , tidyhydat , tidyILD , tidyjson , tidylda , tidylearn , tidyllm , tidylo , tidylog , tidyLPA , tidyMC , tidymodels , TidyMultiqc , tidync , tidynorm , tidyomics , tidypaleo , tidyplate , tidyplots , tidyplus , tidypopgen , tidyposterior , tidypredict , tidyprint , tidyprompt , tidyquant , tidyquery , tidyr , tidyrates , tidyREDCap , tidyrgee , tidyRSS , tidyrstats , tidyrules , tidysdm , tidyselect , tidyseurat , tidySingleCellExperiment , tidysmd , tidySpatialExperiment , tidyspec , tidystringdist , tidySummaries , tidySummarizedExperiment , tidysummary , tidysynth , tidysynthesis , tidytable , tidyterra , tidytext , tidytlg , tidytreatment , tidytree , tidyttmoment , tidytuesdayR , tidyusmacro , tidyverse , tidyvpc , tidywater , tidywikidatar , tigger , tikatuwq , timbr , timefully , timeplyr , timetk , tinkr , tintin , tinylens , tinyscholar , tip , tipr , Tivy , TKCat , tlsR , tma , tmap , tmap.mapgl , TmCalculator , tmod , tmt , tna , toastui , tomledit , tongfen , toolero , topics , topolow , toposort , tor , torch , torchvision , torchvisionlib , tornado , toscutil , tost.suite , tower , toxdrc , toxpiR , toxSummary , Tplyr , TPP , track2KBA , trafficCAR , traineR , traitstrap , traktok , transformr , TransProR , transx , traudem , traumar , treeclimbR , treediff , treeio , treesitter , treestructure , TreeSummarizedExperiment , tReeTraits , trelliscopejs , trendtestR , trialr , TrialSimulator , tricolore , TriLLIEM , trip , triptych , troopdata , trtswitch , trud , trustmebro , tscv , tsg , tsibble , tsibbletalk , tsnet , tuber , tuberculosis , tubern , TUFLOWR , tune , tv , tvdenoising , twbparser , tweenr , twn , TwoDcDAPSA , TwoRegression , TwoWayFEWeights , twoxtwo , typetracer , typr , typstable , ubair , ubms , UCSCXenaShiny , UCSCXenaTools , uisapi , ukbflow , ulrb , UMI4Cats , uncertainUCDP , uncmbb , unheadr , unicefData , UniProt.ws , unityForest , univariateML , universalmotif , unjoin , unpivotr , unstruwwel , unsum , unusualprofile , updateme , ura , urlexplorer , usedthese , useful , usemodels , usethis , usmap , usmapdata , ustfd , uteals , utile.tables , UVdose , uxr , vaccine , vaccineff , vachette , valdrViz , valentine , valhallr , validata , validateIt , valr , VancouvR , vangogh , vannstats , variancePartition , vazul , vchartr , vcr , vctrs , vdiffr , vDiveR , vecmatch , vectorsurvR , vectra , vecvec , vegawidget , VennDetail , verdata , versus , vetiver , vibass , videogameinsightsR , viewscape , vigicaen , vimixr , vimp , vimpclust , ViroReportR , Virusparies , virustotal , visae , vismi , visOmopResults , VISTA , vistime , visualFields , visvaR , vitae , vital , vitals , vitopack , vivaglint , vivainsights , vmeasur , vmsae , voiceR , vol2birdR , volcano3D , volker , voronoiTreemap , voson.tcn , vosonSML , Voyager , vpc , vroom , vsp , vvcanvas , vvfiller , VWPre , W4MRUtils , wakefield , waldo , walker , wallace , WAreg , washr , watcher , WaterBalanceR , waterfalls , Wats , waves , waysign , waywiser , wbids , wbstats , wbwdi , wdiexplorer , wdnr.gis , weaana , webchem , WebGestaltR , webmockr , webr , wefnexus , wehoop , weightedsurv , WeightIt , weird , weitrix , wf , whatifbandit , when , whep , whippr , whirl , whomds , widyr , wikkitidy , windAC , wingen , wizaRdry , WoodSimulatR , worcs , wordpiece , workflows , workflowsets , workspace , worldfootballR , worldmet , wpm , wppi , WpProj , wqspt , wrangle , wrappedtools , wrds , WRI , wrictools , writeAlizer , writer , wru , wsMed , wstats , WVPlots , xadmix , xdvir , xegaDfGene , xegaGaGene , xkcd , xlr , xlsform2word , xmap , xml2 , xml2relational , xmpdf , xmrr , xpectr , xportr , xpose , xpose.nlmixr2 , xpose.xtras , xrf , xtdml , xtvfreg , yamlet , yardstick , ycevo , yfinancer , ymlthis , yodel , yulab.utils , zctaCrosswalk , zcurve , zenstats , zephyr , zipcodeR , zoltr , ZonationR , zoomerjoin , zoomr , ZygosityPredictor
Reverse Suggests
activAnalyzer , affiner , aLBI , AMR , apisensr , appeears , asympDiag , autodb , autoGO , bage , barrks , bayesSSM , bdc , BeeBDC , bestNormalize , BiodiversityR , BioTIMEr , biscuiteer , blendR , blockr.ggplot , box , bugphyzz , camtrapR , canvasXpress , Certara.RsNLME , cli , CNVreg , covr , Cubist , CVXR , dat , diceR , directlabels , distilleR , domir , DT2 , dttr2 , duckdb , eCerto , ecmwfr , escape , evaluate , extras , fableCount , FielDHub , finalfit , FisPro , flassomsm , flir , forestplot , fy , galamm , GauPro , GeoFIS , getLattes , gglogger , ggmlR , ggthemes , glue , grafify , grates , gratis , grattan , here , Hmisc , htmlTable , HVT , hyperoverlap , InspectionPlanner , IssueTrackeR , iucnr , junco , kardl , kidsides , knitr , labelmachine , latex2exp , lintr , listarrays , LLMAgentR , magrittr , manydata , mcmcr , mctq , md4r , medfate , mlr3db , mpindex , MsCoreUtils , multiscape , nanoarrow , NanoporeRNASeq , NanoTube , naryn , odin , ohenery , onetime , otelsdk , pcutils , Pedixplorer , PhytosanitaryCalculator , priorityelasticnet , pROC , processx , projpred , ps , public.ctn0094data , qrlabelr , quanteda , quickr , QurvE , r2dii.data , r5rgui , rbiom , rcdf , regmedint , releaser , reproducible , Require , Rfuzzycoco , rgph , rhino , rmapzen , rnaturalearth , RPostgres , rprojroot , rsmatch , rsofun , rsprite2 , rwa , rxode2 , scITD , scLANE , SCpubr , scTypeEval , see , serofoi , sf , sftime , shinyGovstyle , shinyMixR , shinystate , simulateDCE , sitrep , sjlabelled , slopes , SomaDataIO , spNetwork , statnet.common , superb , TAD , teal.modules.general , tergm , testthatmulti , TeXCheckR , tfautograph , tglkmeans , tidydann , tidysq , tidyxl , unglue , utf8 , viewpoly , wcvpmatch , winch , withdots , withr , wmwAUC
URL
https://rlang.r-lib.org , https://github.com/r-lib/rlang
Version
1.2.0
Windows Binaries
r-devel: rlang_1.2.0.zip , r-release: rlang_1.2.0.zip , r-oldrel: rlang_1.2.0.zip
MacOS Binaries
r-release (arm64): rlang_1.2.0.tgz , r-oldrel (arm64): rlang_1.2.0.tgz , r-release (x86_64): rlang_1.2.0.tgz , r-oldrel (x86_64): rlang_1.2.0.tgz
Version
1.2.0
Enhances
winch
Published
2026-04-06
DOI
10.32614/CRAN.package.rlang
Author
Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd]
Maintainer
Lionel Henry <lionel at posit.co>
BugReports
https://github.com/r-lib/rlang/issues
License
MIT + file LICENSE
URL
https://rlang.r-lib.org , https://github.com/r-lib/rlang
NeedsCompilation
yes
Materials
README , NEWS
CRAN Checks
rlang results
Reference Manual
rlang.html , rlang.pdf
Package Source
rlang_1.2.0.tar.gz
Windows Binaries
r-devel: rlang_1.2.0.zip , r-release: rlang_1.2.0.zip , r-oldrel: rlang_1.2.0.zip
MacOS Binaries
r-release (arm64): rlang_1.2.0.tgz , r-oldrel (arm64): rlang_1.2.0.tgz , r-release (x86_64): rlang_1.2.0.tgz , r-oldrel (x86_64): rlang_1.2.0.tgz
Old Sources
rlang archive
Reverse Depends
AQuadtree , bistablehistory , eq5d , eyelinkReader , fxl , HEDA , HelpersMG , ldblock , matchMulti , matchr , mevr , microseq , optimalFlow , prophet , PRROC , PupillometryR , PupilPre , radEmu , saccadr , simITS , SKFCPD , triplesmatch , xtsum
Reverse Imports
a11yShiny , a5R , aae.pop , ABCDscores , abjutils , AbSolution , academictwitteR , accelEE , AcceptReject , accrualPlot , accucor , Achilles , acledR , activatr , actuary , actxps , adapt3 , adas.utils , additive , adepro , adheRenceRX , adj , adjclust , adjustedCurves , admiral , admiraldev , admiralmetabolic , admiralneuro , admiralonco , admiralophtha , admiralpeds , admiralvaccine , admixr , adnuts , adobeanalyticsr , adproclus , adrftools , adverbial , aeddo , aedseo , AEenrich , aelab , afcharts , afex , AFR , aftables , AgePopDenom , AgeTopicModels , ageutils , aggregateBioVar , aghq , agriutilities , agrobox , agrostab , ags , agua , agvgd , AHPWR , AIBias , aifeducation , airGRiwrm , AirMonitor , airnow , airpart , airship , airt , AIscreenR , aisdk , akc , alakazam , alarmdata , ale , alevinQC , alfred , alien , AlignLV , allofus , almanac , alookr , AlphaMissenseR , AlpsNMR , amadeus , amapGeocode , ambient , Amelia , ami , amp , amp.dm , amp.sim , amplican , amt , anabel , Analitica , AnanseSeurat , anansi , aNCA , and , andorR , Andromeda , AnimalSequences , animbook , animejs , aniSNA , ankiR , ANN2 , anndataR , annotater , annotatr , anomalize , AntClassify , AnthropMMD , AntibodyForests , AnVILGCP , AnVILWorkflow , aopdata , apa7 , apache.sedona , APackOfTheClones , APAlyzer , APCalign , APCinteraction , apexcharter , APIS , APL , aplotExtra , applicable , appsheet , apyramid , AquaBEHER , aquodom , arcgisgeocode , arcgislayers , arcgisplaces , arcgisutils , archive , arcpbf , arcpullr , areal , arg , arpr , ArrayExpress , arrow , artma , artpack , ARUtools , ArvindSt , askgpt , ASML , aspline , asremlPlus , assertions , assertr , assignPOP , assignR , ATE.ERROR , Athlytics , ATQ , atrrr , attempt , audubon , auk , authordown , AutoAds , autogam , autoharp , autoimport , autonomics , autoReg , AutoScore , autoslider.core , autostats , autothresholdr , autoTS , AutoWMM , AuxSurvey , avstrat , AWAggregator , awdb , azr , AzureAppInsights , AzureKusto ,
Reverse Suggests
activAnalyzer , affiner , aLBI , AMR , apisensr , appeears , asympDiag , autodb , autoGO , bage , barrks , bayesSSM , bdc , BeeBDC , bestNormalize , BiodiversityR , BioTIMEr , biscuiteer , blendR , blockr.ggplot , box , bugphyzz , camtrapR , canvasXpress , Certara.RsNLME , cli , CNVreg , covr , Cubist , CVXR , dat , diceR , directlabels , distilleR , domir , DT2 , dttr2 , duckdb , eCerto , ecmwfr , escape , evaluate , extras , fableCount , FielDHub , finalfit , FisPro , flassomsm , flir , forestplot , fy , galamm , GauPro , GeoFIS , getLattes , gglogger , ggmlR , ggthemes , glue , grafify , grates , gratis , grattan , here , Hmisc , htmlTable , HVT , hyperoverlap , InspectionPlanner , IssueTrackeR , iucnr , junco , kardl , kidsides , knitr , labelmachine , latex2exp , lintr , listarrays , LLMAgentR , magrittr , manydata , mcmcr , mctq , md4r , medfate , mlr3db , mpindex , MsCoreUtils , multiscape , nanoarrow , NanoporeRNASeq , NanoTube , naryn , odin , ohenery , onetime , otelsdk , pcutils , Pedixplorer , PhytosanitaryCalculator , priorityelasticnet , pROC , processx , projpred , ps , public.ctn0094data , qrlabelr , quanteda , quickr , QurvE , r2dii.data , r5rgui , rbiom , rcdf , regmedint , releaser , reproducible , Require , Rfuzzycoco , rgph , rhino , rmapzen , rnaturalearth , RPostgres , rprojroot , rsmatch , rsofun , rsprite2 , rwa , rxode2 , scITD , scLANE , SCpubr , scTypeEval , see , serofoi , sf , sftime , shinyGovstyle , shinyMixR , shinystate , simulateDCE , sitrep , sjlabelled , slopes , SomaDataIO , spNetwork , statnet.common , superb , TAD , teal.modules.general , tergm , testthatmulti , TeXCheckR , tfautograph , tglkmeans , tidydann , tidysq , tidyxl , unglue , utf8 , viewpoly , wcvpmatch , winch , withdots , withr , wmwAUC
Page sections 4
Documentation
Heading
Documentation
Links
[{"label":"rlang.html","section":"","type":"","url":"https://cran.r-project.org/web/packages/rlang/refman/rlang.html"},{"label":"rlang.pdf","section":"","type":"","url":"https://cran.r-project.org/web/packages/rlang/rlang.pdf"}]
Text
Reference manual: rlang.html , rlang.pdf
Downloads
Heading
Downloads
Links
[{"label":"rlang_1.2.0.tar.gz","section":"","type":"","url":"https://cran.r-project.org/src/contrib/rlang_1.2.0.tar.gz"},{"label":"rlang_1.2.0.zip","section":"","type":"","url":"https://cran.r-project.org/bin/windows/contrib/4.7/rlang_1.2.0.zip"},{"label":"rlang_1.2.0.zip","section":"","type":"","url":"https://cran.r-project.org/bin/windows/contrib/4.6/rlang_1.2.0.zip"},{"label":"rlang_1.2.0.zip","section":"","type":"","url":"https://cran.r-project.org/bin/windows/contrib/4.5/rlang_1.2.0.zip"},{"label":"rlang_1.2.0.tgz","section":"","type":"","url":"https://cran.r-project.org/bin/macosx/sonoma-arm64/contrib/4.6/rlang_1.2.0.tgz"},{"label":"rlang_1.2.0.tgz","section":"","type":"","url":"https://cran.r-project.org/bin/macosx/big-sur-arm64/contrib/4.5/rlang_1.2.0.tgz"},{"label":"rlang_1.2.0.tgz","section":"","type":"","url":"https://cran.r-project.org/bin/macosx/big-sur-x86_64/contrib/4.6/rlang_1.2.0.tgz"},{"label":"rlang_1.2.0.tgz","section":"","type":"","url":"https://cran.r-project.org/bin/macosx/big-sur-x86_64/contrib/4.5/rlang_1.2.0.tgz"},{"label":"rlang archive","section":"","type":"","url":"https://CRAN.R-project.org/src/contrib/Archive/rlang"}]
Text
Package source: rlang_1.2.0.tar.gz Windows binaries: r-devel: rlang_1.2.0.zip , r-release: rlang_1.2.0.zip , r-oldrel: rlang_1.2.0.zip macOS binaries: r-release (arm64): rlang_1.2.0.tgz , r-oldrel (arm64): rlang_1.2.0.tgz , r-release (x86_64): rlang_1.2.0.tgz , r-oldrel (x86_64): rlang_1.2.0.tgz Old sources: rlang archive
Reverse dependencies
Heading
Reverse dependencies
Links
[{"label":"AQuadtree","section":"","type":"","url":"https://cran.r-project.org/web/packages/AQuadtree/index.html"},{"label":"bistablehistory","section":"","type":"","url":"https://cran.r-project.org/web/packages/bistablehistory/index.html"},{"label":"eq5d","section":"","type":"","url":"https://cran.r-project.org/web/packages/eq5d/index.html"},{"label":"eyelinkReader","section":"","type":"","url":"https://cran.r-project.org/web/packages/eyelinkReader/index.html"},{"label":"fxl","section":"","type":"","url":"https://cran.r-project.org/web/packages/fxl/index.html"},{"label":"HEDA","section":"","type":"","url":"https://cran.r-project.org/web/packages/HEDA/index.html"},{"label":"HelpersMG","section":"","type":"","url":"https://cran.r-project.org/web/packages/HelpersMG/index.html"},{"label":"ldblock","section":"","type":"","url":"https://www.bioconductor.org/packages/release/bioc/html/ldblock.html"},{"label":"matchMulti","section":"","type":"","url":"https://cran.r-project.org/web/packages/matchMulti/index.html"},{"label":"matchr","section":"","type":"","url":"https://cran.r-project.org/web/packages/matchr/index.html"},{"label":"mevr","section":"","type":"","url":"https://cran.r-project.org/web/packages/mevr/index.html"},{"label":"microseq","section":"","type":"","url":"https://cran.r-project.org/web/packages/microseq/index.html"},{"label":"optimalFlow","section":"","type":"","url":"https://www.bioconductor.org/packages/release/bioc/html/optimalFlow.html"},{"label":"prophet","section":"","type":"","url":"https://cran.r-project.org/web/packages/prophet/index.html"},{"label":"PRROC","section":"","type":"","url":"https://cran.r-project.org/web/packages/PRROC/index.html"},{"label":"PupillometryR","section":"","type":"","url":"https://cran.r-project.org/web/packages/PupillometryR/index.html"},{"label":"PupilPre","section":"","type":"","url":"https://cran.r-project.org/web/packages/PupilPre/index.html"},{"label":"radEmu","section":"","type":"","url":"https://cran.r-project.org/web/packages/radEmu/index.html"},{"label":"saccadr","section":"","type":"","url":"https://cran.r-project.org/web/packages/saccadr/index.html"},{"label":"simITS","section":"","type":"","url":"https://cran.r-project.org/web/packages/simITS/index.html"}]
Text
Reverse depends: AQuadtree , bistablehistory , eq5d , eyelinkReader , fxl , HEDA , HelpersMG , ldblock , matchMulti , matchr , mevr , microseq , optimalFlow , prophet , PRROC , PupillometryR , PupilPre , radEmu , saccadr , simITS , SKFCPD , triplesmatch , xtsum Reverse imports: a11yShiny , a5R , aae.pop , ABCDscores , abjutils , AbSolution , academictwitteR , accelEE , AcceptReject , accrualPlot , accucor , Achilles , acledR , activatr , actuary , actxps , adapt3 , adas.utils , additive , adepro , adheRenceRX , adj , adjclust , adjustedCurves , admiral , admiraldev , admiralmetabolic , admiralneuro , admiralonco , admiralophtha , admiralpeds , admiralvaccine , admixr , adnuts , adobeanalyticsr , adproclus , adrftools , adverbial , aeddo , aedseo , AEenrich , aelab , afcharts , afex , AFR , aftables , AgePopDenom , AgeTopicModels , ageutils , aggregateBioVar , aghq , agriutilities , agrobox , agrostab , ags , agua , agvgd , AHPWR , AIBias , aifeducation , airGRiwrm , AirMonitor , airnow , airpart , airship , airt , AIscreenR , aisdk , akc , alakazam , alarmdata , ale , alevinQC , alfred , alien , AlignLV , allofus , almanac , alookr , AlphaMissenseR , AlpsNMR , amadeus , amapGeocode , ambient , Amelia , ami , amp , amp.dm , amp.sim , amplican , amt , anabel , Analitica , AnanseSeurat , anansi , aNCA , and , andorR , Andromeda , AnimalSequences , animbook , animejs , aniSNA , ankiR , ANN2 , anndataR , annotater , annotatr , anomalize , AntClassify , AnthropMMD , AntibodyForests , AnVILGCP , AnVILWorkflow , aopdata , apa7 , apache.sedona , APackOfTheClones , APAlyzer , APCalign , APCinteraction , apexcharter , APIS , APL , aplotExtra , applicable , appsheet , apyramid , AquaBEHER , aquodom , arcgisgeocode , arcgislayers , arcgisplaces , arcgisutils , archive , arcpbf , arcpullr , areal , arg , arpr , ArrayExpress , arrow , artma , artpack , ARUtools , ArvindSt , askgpt , ASML , aspline , asremlPlus , assertions , assertr , assignPOP , assignR , ATE.ERROR , Athlytics ,
Linking
Heading
Linking
Links
[{"label":"https://CRAN.R-project.org/package=rlang","section":"","type":"","url":"https://CRAN.R-project.org/package=rlang"}]
Text
Please use the canonical form https://CRAN.R-project.org/package=rlang to link to this page.
Materials 2
Documentation 2
Downloads 9
All page links 120

패키지 문서 원문

4 artifacts
field
NEWS
CRAN · 1.2.0 · Materials · text/html · 140,632 · 2026-05-07
Title
NEWS
Label
NEWS
Text content
Text content
NEWS code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} span.underline{text-decoration: underline;} div.column{display: inline-block; vertical-align: top; width: 50%;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} ul.task-list{list-style: none;} pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } div.sourceCode { margin: 1em 0; } pre.sourceCode { margin: 0; } @media screen { div.sourceCode { overflow: auto; } } @media print { pre > code.sourceCode { white-space: pre-wrap; } pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } } pre.numberSource code { counter-reset: source-line 0; } pre.numberSource code > span { position: relative; left: -4em; counter-increment: source-line; } pre.numberSource code > span > a:first-child::before { content: counter(source-line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; padding: 0 4px; width: 4em; color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } div.sourceCode { } @media screen { pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } } code span.al { color: #ff0000; font-weight: bold; } /* Alert */ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ code span.bu { color: #008000; } /* BuiltIn */ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ code span.cn { color: #880000; } /* Constant */ code span.co { color: #60a0b0; font-style: italic; } /* Comment */ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ code span.do { color: #ba2121; font-style: italic; } /* Documentation */ code span.dt { color: #902000; } /* DataType */ code span.dv { color: #40a070; } /* DecVal */ code span.er { color: #ff0000; font-weight: bold; } /* Error */ code span.ex { } /* Extension */ code span.fl { color: #40a070; } /* Float */ code span.fu { color: #06287e; } /* Function */ code span.im { color: #008000; font-weight: bold; } /* Import */ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ code span.ot { color: #007020; } /* Other */ code span.pp { color: #bc7a00; } /* Preprocessor */ code span.sc { color: #4070a0; } /* SpecialChar */ code span.ss { color: #bb6688; } /* SpecialString */ code span.st { color: #4070a0; } /* String */ code span.va { color: #19177c; } /* Variable */ code span.vs { color: #4070a0; } /* VerbatimString */ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ rlang 1.2.0 rlang and tidyeval are now fully backed by official C APIs of R! Thanks to the R core team for collaborating with us on this. ns_registry_env() is defunct in R >= 4.6.0 for compliance with the C API of R. New type-checking functions exported from rlang: check_bool() , check_string() , check_name() , check_number_decimal() , check_number_whole() , and check_data_frame() . These were previously only available via the standalone-types-check.R standalone file. stop_input_type() is also now exported. Fixed a protection issue discovered by rchk (#1865). rlang 1.1.7 Progress towards making rlang conformant with the public C API of R. R >=4.0.0 is now required. This is still more permissive than the general tidyverse policy of supporting the 5 most recent versions of R . list2() is now a little faster (#1837). New %&&% operator that returns RHS when LHS is non-NULL (#1774, @snystrom ). C code no longer calls memcpy() and memset() on 0-length R object memory (#1797). is_syntactic_literal() returns FALSE for objects with attributes, such as array(1) or factor("x") (#1817, @jonthegeek ). is_syntactic_literal() returns FALSE for negative numbers and complex numbers with negative imaginary components (#1799, @jonthegeek ). rlang 1.1.6 Fixes for CRAN checks. Progress towards making rlang conformant with the public C API of R. env_browse() and env_is_browsed() are now defunct as they require an API that is no longer available to packages (#1727). The SEXP iterator of the rlang C library (used in r-lib/memtools) is now behind a feature flag because it requires private API accessors. Compile rlang with -DRLANG_USE_PRIVATE_ACCESSORS to enable it. env_unlock() is now defunct because recent versions of R no long make it possible to unlock an environment (#1705). Make sure to use an up-to-date version of pkgload (>= 1.4.0) following this change. is_dictionaryish() now will return TRUE for NULL ( @ilovemane , #1712). rlang 1.1.4 Added missing C level r_dyn_raw_push_back() and r_dyn_chr_push_back() utilities (#1699). last_trace() hyperlinks now use the modern x-r-run format (#1678). rlang 1.1.3 Fix for CRAN checks. %||% is now reexported from base on newer R versions. This avoids conflict messages when attaching or importing rlang. rlang 1.1.2 Fixed an off-by-one typo in the traceback source column location (#1633). abort() now respects the base R global option, options(show.error.messages = FALSE) (#1630). obj_type_friendly() now only displays the first class of S3 objects (#1622). expr_label() now has back-compatibility with respect to changes made by R version 4.4 and is.atomic(NULL) (#1655) Performance improvement in .rlang_cli_compat() (#1657). rlang 1.1.1 englue() now allows omitting {{ . This is to make it easier to embed in external functions that need to support either { and {{ (#1601). Fix for CRAN checks. stop_input_type() now handles I() input literally in arg (#1607, @simonpcouch ). parse_expr() and parse_exprs() are now faster when getOption("keep.source") is TRUE (#1603). rlang 1.1.0 Life cycle changes dots_splice() is deprecated. This function was previously in the questioning lifecycle stage as we were moving towards the explicit !!! splicing style. flatten() , squash() , and their variants are deprecated in favour of purrr::list_flatten() and purrr::list_c() . child_env() is deprecated in favour of env() which has supported creating child environments for several years now. Main new features last_error() and options(rlang_backtrace_on_error = "full") now print the full backtrace tree by default (except for some hidden frames). The simplified backtraces tended to hide important context too often. Now we show intervening frames in a lighter colour so that they don’t distract from the important parts of the backtraces but are still easily inspectable. global_entrace() , last_warnings() , and last_messages() now support knitr documents. New rlang_backtrace_on_warning_report global option. This is useful in conjunction with global_entrace() to get backtraces on warnings inside RMarkdown documents. global_entrace() and entrace() now stop entracing warnings and messages after 20 times. This is to avoid a large overhead when 100s or 1000s of warnings are signalled in a loop (#1473). abort() , warn() , and inform() gain an .inherit parameter. This controls whether parent is inherited. If FALSE , cnd_inherits() and try_fetch() do not match chained conditions across parents. It’s normally TRUE by default, but if a warning is chained to an error or a message is chained to a warning or error (downgraded chaining), .inherit defaults to FALSE (#1573). try_fetch() now looks up condition classes across chained errors (#1534). This makes try_fetch() insen
field
README
CRAN · 1.2.0 · Materials · text/html · 8,817 · 2026-05-07
Title
README
Label
README
Text content
Text content
README code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} span.underline{text-decoration: underline;} div.column{display: inline-block; vertical-align: top; width: 50%;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} ul.task-list{list-style: none;} pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } div.sourceCode { margin: 1em 0; } pre.sourceCode { margin: 0; } @media screen { div.sourceCode { overflow: auto; } } @media print { pre > code.sourceCode { white-space: pre-wrap; } pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } } pre.numberSource code { counter-reset: source-line 0; } pre.numberSource code > span { position: relative; left: -4em; counter-increment: source-line; } pre.numberSource code > span > a:first-child::before { content: counter(source-line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; padding: 0 4px; width: 4em; color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } div.sourceCode { } @media screen { pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } } code span.al { color: #ff0000; font-weight: bold; } /* Alert */ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ code span.bu { color: #008000; } /* BuiltIn */ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ code span.cn { color: #880000; } /* Constant */ code span.co { color: #60a0b0; font-style: italic; } /* Comment */ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ code span.do { color: #ba2121; font-style: italic; } /* Documentation */ code span.dt { color: #902000; } /* DataType */ code span.dv { color: #40a070; } /* DecVal */ code span.er { color: #ff0000; font-weight: bold; } /* Error */ code span.ex { } /* Extension */ code span.fl { color: #40a070; } /* Float */ code span.fu { color: #06287e; } /* Function */ code span.im { color: #008000; font-weight: bold; } /* Import */ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ code span.ot { color: #007020; } /* Other */ code span.pp { color: #bc7a00; } /* Preprocessor */ code span.sc { color: #4070a0; } /* SpecialChar */ code span.ss { color: #bb6688; } /* SpecialString */ code span.st { color: #4070a0; } /* String */ code span.va { color: #19177c; } /* Variable */ code span.vs { color: #4070a0; } /* VerbatimString */ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ rlang rlang is a collection of frameworks and APIs for programming with R. Frameworks Two comprehensive frameworks are implemented in rlang. tidy eval , a programmable data-masking framework used in tidyverse packages like dplyr and ggplot2. As a user, you will encounter the embracing operator {{ and name injection with the glue operators "{" and "{{" . rlang errors , a set of tools to signal and display errors. This includes backtrace capture with global_entrace() and backtrace display with last_error() and last_warnings() . Use abort() to create errors with bullet lists, structured metadata, and error chaining support. The display of error messages is optimised for bullet lists and chained errors and optionally integrates with the cli package (see local_use_cli() ). Argument intake A set of tools help you check, validate, and preprocess arguments. Checking function arguments, e.g. arg_match() , check_required() , and check_exclusive() . Checking dots, e.g. check_dots_used() and check_dots_empty() . Collecting dynamic dots , e.g. list2() . These dots support splicing with !!! and name injection with the glue operators "{" and "{{" . Programming interfaces rlang provides various interfaces for working with R and R objects. The R session, e.g. check_installed() , on_load() , and on_package_load() . Environments, e.g. env() , env_has() , env_get() , env_bind() , env_unbind() , env_print() , and local_bindings() . Evaluation, e.g. inject() and eval_bare() . Calls and symbols, e.g. call2() , is_call() , is_call_simple() , data_sym() , and data_syms() . Functions, e.g. new_function() and as_function() . The latter supports the purrr-style formula notation for lambda functions. Installation Install the released version of rlang from CRAN: install.packages ( "rlang" ) Or install the development version from GitHub with: # install.packages("pak") pak :: pkg_install ( "r-lib/rlang" ) Code of Conduct Please note that the rlang project is released with a Contributor Code of Conduct . By contributing to this project, you agree to abide by its terms.
reference_manual_html
Reference manual HTML
CRAN · 1.2.0 · Documentation · text/html · 618,117 · 2026-05-07
Title
Help for package rlang
Label
Reference manual HTML
Text content
Text content
Help for package rlang const macros = { "\\R": "\\textsf{R}", "\\mbox": "\\text", "\\code": "\\texttt"}; function processMathHTML() { var l = document.getElementsByClassName('reqn'); for (let e of l) { katex.render(e.textContent, e, { throwOnError: false, macros }); } return; } Package {rlang} Contents rlang-package UQ abort are_na arg_match args_data_masking args_dots_empty args_dots_used args_error_context as_box as_closure as_data_mask as_environment as_function as_label as_name as_string as_utf8_character bare-type-predicates box bytes-class call2 call_args call_fn call_inspect call_match call_modify call_name call_standardise caller_arg catch_cnd check_data_frame check_dots_empty check_dots_empty0 check_dots_unnamed check_dots_used check_exclusive check_required check_type_number check_type_scalar child_env chr_unserialise_unicode cnd cnd_inherits cnd_message cnd_muffle cnd_signal cnd_type defusing-advanced dev-notes-dots done dot-data dots_n dots_splice dots_values duplicate dyn-dots embrace-operator empty_env englue enquo entrace env env_bind env_binding_are_active env_binding_lock env_browse env_bury env_cache env_clone env_depth env_get env_has env_inherits env_is_user_facing env_lock env_name env_names env_parent env_poke env_print env_unbind env_unlock eval_bare eval_tidy exec expr expr_interp expr_label expr_print exprs_auto_name f_rhs f_text faq-options ffi_standalone_types_check flatten fn_body fn_env fn_fmls format_error_bullets format_error_call friendly_type get_env global_entrace global_handle global_prompt_install glue-operators has_length has_name hash inherits_any inject injection-operator interrupt invoke is_call is_callable is_condition is_copyable is_dictionaryish is_empty is_environment is_expression is_formula is_function is_installed is_integerish is_interactive is_lang is_named is_namespace is_pairlist is_reference is_symbol is_true is_weakref lang last_error last_warnings list2 local_bindings local_error_call local_options local_use_cli missing missing_arg names2 names_inform_repair new-vector new_call new_formula new_function new_node new_quosure new_quosures new_weakref ns_env ns_registry_env obj_address on_load op-get-attr op-na-default op-null-continuation op-null-default pairlist2 parse_expr prim_name qq_show quo_expr quo_label quo_squash quosure-tools raw_deparse_str rep_along return_from rlang_backtrace_on_error rlang_error rlib_trace_spec scalar-type-predicates scoped_env scoped_interactive search_envs seq2 set_attrs set_expr set_names splice splice-operator stack stack-deprecated stop_input_type string switch_type sym topic-condition-customisation topic-condition-formatting topic-data-mask topic-data-mask-ambiguity topic-data-mask-programming topic-defuse topic-double-evaluation topic-embrace-constants topic-embrace-non-args topic-error-call topic-error-chaining topic-inject topic-inject-out-of-context topic-metaprogramming topic-multiple-columns topic-quosure trace_back try_fetch type-predicates type_of vec_poke_n vector-coercion vector-construction with_env with_handlers wref_key zap zap_srcref Version: 1.2.0 Title: Functions for Base Types and Core R and 'Tidyverse' Features Description: A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation. License: MIT + file LICENSE ByteCompile: true Biarch: true Depends: R (≥ 4.0.0) Imports: utils Suggests: cli (≥ 3.1.0), covr, crayon, desc, fs, glue, knitr, magrittr, methods, pillar, pkgload, rmarkdown, stats, testthat (≥ 3.3.2), tibble, usethis, vctrs (≥ 0.2.3), withr Enhances: winch Encoding: UTF-8 RoxygenNote: 7.3.3 URL: https://rlang.r-lib.org , https://github.com/r-lib/rlang BugReports: https://github.com/r-lib/rlang/issues Config/build/compilation-database: true Config/testthat/edition: 3 Config/Needs/website: dplyr, tidyverse/tidytemplate NeedsCompilation: yes Packaged: 2026-04-02 12:23:10 UTC; lionel Author: Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd] Maintainer: Lionel Henry <lionel@posit.co> Repository: CRAN Date/Publication: 2026-04-06 10:40:02 UTC rlang: Functions for Base Types and Core R and 'Tidyverse' Features Description A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation. Author(s) Maintainer : Lionel Henry lionel@posit.co Authors: Hadley Wickham hadley@posit.co Other contributors: mikefc mikefc@coolbutuseless.com (Hash implementation based on Mike's xxhashlite) [copyright holder] Yann Collet (Author of the embedded xxHash library) [copyright holder] Posit, PBC [copyright holder, funder] See Also Useful links: https://rlang.r-lib.org https://github.com/r-lib/rlang Report bugs at https://github.com/r-lib/rlang/issues Deprecated UQ() and UQS() operators Description These operators are deprecated in favour of !! and !!! . Usage UQ(x) UQS(x) Signal an error, warning, or message Description These functions are equivalent to base functions base::stop() , base::warning() , and base::message() . They signal a condition (an error, warning, or message respectively) and make it easy to supply condition metadata: Supply class to create a classed condition that can be caught or handled selectively, allowing for finer-grained error handling. Supply metadata with named ... arguments. This data is stored in the condition object and can be examined by handlers. Supply call to inform users about which function the error occurred in. Supply another condition as parent to create a chained condition . Certain components of condition messages are formatted with unicode symbols and terminal colours by default. These aspects can be customised, see Customising condition messages . Usage abort( message = NULL, class = NULL, ..., call, body = NULL, footer = NULL, trace = NULL, parent = NULL, use_cli_format = NULL, .inherit = TRUE, .internal = FALSE, .file = NULL, .frame = caller_env(), .trace_bottom = NULL, .subclass = deprecated() ) warn( message = NULL, class = NULL, ..., body = NULL, footer = NULL, parent = NULL, use_cli_format = NULL, .inherit = NULL, .frequency = c("always", "regularly", "once"), .frequency_id = NULL, .subclass = deprecated() ) inform( message = NULL, class = NULL, ..., body = NULL, footer = NULL, parent = NULL, use_cli_format = NULL, .inherit = NULL, .file = NULL, .frequency = c("always", "regularly", "once"), .frequency_id = NULL, .subclass = deprecated() ) signal(message = "", class, ..., .subclass = deprecated()) reset_warning_verbosity(id) reset_message_verbosity(id) Arguments message The message to display, formatted as a bulleted list . The first element is displayed as an alert bullet prefixed with ! by default. Elements named "*" , "i" , "v" , "x" , and "!" are formatted as regular, info, success, failure, and error bullets respectively. See Formatting messages with cli for more about bulleted messaging. If a message is not supplied, it is expected that the message is generated lazily through cnd_header() and cnd_body() methods. In that case, class must be supplied. Only inform() allows empty messages as it is occasionally useful to build user output incrementally. If a function, it is stored in the header field of the error condition. This acts as a cnd_header() method that is invoked lazily when the error message is displayed. class Subclass of the condition. ... Additional data to be stored in the condition object. If you supply condition fields, you should usually provide a class argument. You may consider prefixing condition fields with the name of your package or organisation to prevent name collisions. call The execution environment of a currently running function, e.g. call = caller_env() . The corresponding function call is retrieved and mentioned in error messages as the source of the error. You only need to supply call when thro
section
rlang.pdf
CRAN · 1.2.0 · Documentation · application/pdf · 485,713 · 2026-05-07
Title
rlang.pdf
Label
rlang.pdf

Reference for rlang (1.2.0)

80개 topic
UQ
Deprecated UQ() and UQS() operators
CRAN · 1.2.0 · rlang/man/UQ.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated] These operators are deprecated in favour of [=injection-operator]!! and [=splice-operator]!!!.

Aliases
UQUQS
Keywords
internal
Usage
UQ(x) UQS(x)
abort
Signal an error, warning, or message
CRAN · 1.2.0 · rlang/man/abort.Rd · 2026-05-07

These functions are equivalent to base functions [base:stop]base::stop(), [base:warning]base::warning(), and [base:message]base::message(). They signal a condition (an error, warning, or message respectively) and make it easy to supply condition metadata: Supply class to create a classed condition that can be caught or handled selectively, allowing for finer-grained error handling. Supply metadata with named ... arguments. This data is stored in the condition object and can be examined by handlers. Supply call to inform users about which function the error occurred in. Supply another condition as parent to create a [=topic-error-chaining]chained condition. Certain components of condition messages are formatted with unicode symbols and terminal colours by default. These aspects can be customised, see html[=topic-condition-customisation]Customising condition messages[=topic-condition-customisation]Customising condition messages.

Aliases
abortwarninformsignalreset_warning_verbosityreset_message_verbosity
Usage
abort( message = NULL, class = NULL, ..., call, body = NULL, footer = NULL, trace = NULL, parent = NULL, use_cli_format = NULL, .inherit = TRUE, .internal = FALSE, .file = NULL, .frame = caller_env(), .trace_bottom = NULL, .subclass = deprecated() ) warn( message = NULL, class = NULL, ..., body = NULL, footer = NULL, parent = NULL, use_cli_format = NULL, .inherit = NULL, .frequency = c("always", "regularly", "once"), .frequency_id = NULL, .subclass = deprecated() ) inform( message = NULL, class = NULL, ..., body = NULL, footer = NULL, parent = NULL, use_cli_format = NULL, .inherit = NULL, .file = NULL, .frequency = c("always", "regularly", "once"), .frequency_id = NULL, .subclass = deprecated() ) signal(message = "", class, ..., .subclass = deprecated()) reset_warning_verbosity(id) reset_message_verbosity(id)
Arguments
message
The message to display, formatted as a bulleted list. The first element is displayed as an alert bullet prefixed with ! by default. Elements named "*", "i", "v", "x", and "!" are formatted as regular, info, success, failure, and error bullets respectively. See html[=topic-condition-formatting]Formatting messages with cli[=topic-condition-formatting]Formatting messages with cli for more about bulleted messaging. If a message is not supplied, it is expected that the message is generated lazily through [=cnd_header]cnd_header() and [=cnd_body]cnd_body() methods. In that case, class must be supplied. Only inform() allows empty messages as it is occasionally useful to build user output incrementally. If a function, it is stored in the header field of the error condition. This acts as a [=cnd_header]cnd_header() method that is invoked lazily when the error message is displayed.
class
Subclass of the condition.
...
Additional data to be stored in the condition object. If you supply condition fields, you should usually provide a class argument. You may consider prefixing condition fields with the name of your package or organisation to prevent name collisions.
call
The execution environment of a currently running function, e.g. call = caller_env(). The corresponding function call is retrieved and mentioned in error messages as the source of the error. You only need to supply call when throwing a condition from a helper function which wouldn't be relevant to mention in the message. Can also be NULL or a [=topic-defuse]defused function call to respectively not display any call or hard-code a code to display. For more information about error calls, see html[=topic-error-call]Including function calls in error messages[=topic-error-call]Including function calls in error messages.
body, footer
Additional bullets.
trace
A trace object created by [=trace_back]trace_back().
parent
Supply parent when you rethrow an error from a condition handler (e.g. with [=try_fetch]try_fetch()). If parent is a condition object, a chained error is created, which is useful when you want to enhance an error with more details, while still retaining the original information. If parent is NA, it indicates an unchained rethrow, which is useful when you want to take ownership over an error and rethrow it with a custom message that better fits the surrounding context. Technically, supplying NA lets abort() know it is called from a condition handler. This helps it create simpler backtraces where the condition handling context is hidden by default. For more information about error calls, see html[=topic-error-chaining]Including contextual information with error chains[=topic-error-chaining]Including contextual information with error chains.
use_cli_format
Whether to format message lazily using https://cli.r-lib.org/cli if available. This results in prettier and more accurate formatting of messages. See [=local_use_cli]local_use_cli() to set this condition field by default in your package namespace. If set to TRUE, message should be a character vector of individual and unformatted lines. Any newline character "\\\" already present in message is reformatted by cli's paragraph formatter. See html[=topic-condition-formatting]Formatting messages with cli[=topic-condition-formatting]Formatting messages with cli.
.inherit
Whether the condition inherits from parent according to [=cnd_inherits]cnd_inherits() and [=try_fetch]try_fetch(). By default, parent conditions of higher severity are not inherited. For instance an error chained to a warning is not inherited to avoid unexpectedly catching an error downgraded to a warning.
.internal
If TRUE, a footer bullet is added to message to let the user know that the error is internal and that they should report it to the package authors. This argument is incompatible with footer.
.file
A connection or a string specifying where to print the message. The default depends on the context, see the stdout vs stderr section.
.frame
The throwing context. Used as default for .trace_bottom, and to determine the internal package to mention in internal errors when .internal is TRUE.
.trace_bottom
Used in the display of simplified backtraces as the last relevant call frame to show. This way, the irrelevant parts of backtraces corresponding to condition handling ([=tryCatch]tryCatch(), [=try_fetch]try_fetch(), abort(), etc.) are hidden by default. Defaults to call if it is an environment, or .frame otherwise. Without effect if trace is supplied.
.subclass
htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated] This argument was renamed to class in rlang 0.4.2 for consistency with our conventions for class constructors documented in https://adv-r.hadley.nz/s3.html#s3-subclassing.
.frequency
How frequently should the warning or message be displayed? By default ("always") it is displayed at each time. If "regularly", it is displayed once every 8 hours. If "once", it is displayed once per session.
.frequency_id
A unique identifier for the warning or message. This is used when .frequency is supplied to recognise recurring conditions. This argument must be supplied if .frequency is not set to "always".
id
The identifying string of the condition that was supplied as .frequency_id to warn() or inform().
Details
abort() throws subclassed errors, see [=rlang_error]"rlang_error". warn() temporarily set the warning.length global option to the maximum value (8170), unless that option has been changed from the default value. The default limit (1000 characters) is especially easy to hit when the message contains a lot of ANSI escapes, as created by the crayon or cli packages
Examples
# These examples are guarded to avoid throwing errors if (FALSE) # Signal an error with a message just like stop(): abort("The error message.") # Unhandled errors are saved automatically by `abort()` and can be # retrieved with `last_error()`. The error prints with a simplified # backtrace: f <- function() try(g()) g <- function() evalq(h()) h <- function() abort("Tilt.") last_error() # Use `summary()` to print the full backtrace and the condition fields: summary(last_error()) # Give a class to the error: abort("The error message", "mypkg_bad_error") # This allows callers to handle the error selectively tryCatch( mypkg_function(), mypkg_bad_error = function(err) warn(conditionMessage(err)) # Demote the error to a warning NA # Return an alternative value ) # You can also specify metadata that will be stored in the condition: abort("The error message.", "mypkg_bad_error", data = 1:10) # This data can then be consulted by user handlers: tryCatch( mypkg_function(), mypkg_bad_error = function(err) # Compute an alternative return value with the data: recover_error(err$data) ) # If you call low-level APIs it may be a good idea to create a # chained error with the low-level error wrapped in a more # user-friendly error. Use `try_fetch()` to fetch errors of a given # class and rethrow them with the `parent` argument of `abort()`: file <- "http://foo.bar/baz" try( try_fetch( download(file), error = function(err) msg <- sprintf("Can't download `%s`", file) abort(msg, parent = err) ) ) # You can also hard-code the call when it's not easy to # forward it from the caller f <- function() abort("my message", call = call("my_function")) g <- function() f() # Shows that the error occurred in `my_function()` try(g())
See also
html[=topic-error-call]Including function calls in error messages[=topic-error-call]Including function calls in error messages html[=topic-error-chaining]Including contextual information with error chains[=topic-error-chaining]Including contextual information with error chains
Custom sections
Error prefix
As with [base:stop]base::stop(), errors thrown with abort() are prefixed with "Error: ". Calls and source references are included in the prefix, e.g. "Error in my_function() at myfile.R:1:2:". There are a few cosmetic differences: The call is stripped from its arguments to keep it simple. It is then formatted using the https://cli.r-lib.org/cli package if available. A line break between the prefix and the message when the former is too long. When a source location is included, a line break is always inserted. If your throwing code is highly structured, you may have to explicitly inform abort() about the relevant user-facing call to include in the prefix. Internal helpers are rarely relevant to end users. See the call argument of abort().
Backtrace
abort() saves a backtrace in the trace component of the error condition. You can print a simplified backtrace of the last error by calling [=last_error]last_error() and a full backtrace with summary(last_error()). Learn how to control what is displayed when an error is thrown with rlang_backtrace_on_error.
Muffling and silencing conditions
Signalling a condition with inform() or warn() displays a message in the console. These messages can be muffled as usual with [base:message]base::suppressMessages() or [base:warning]base::suppressWarnings(). inform() and warn() messages can also be silenced with the global options rlib_message_verbosity and rlib_warning_verbosity. These options take the values: "default": Verbose unless the .frequency argument is supplied. "verbose": Always verbose. "quiet": Always quiet. When set to quiet, the message is not displayed and the condition is not signalled.
stdout and stderr
By default, abort() and inform() print to standard output in interactive sessions. This allows rlang to be in control of the appearance of messages in IDEs like RStudio. There are two situations where messages are streamed to stderr: In non-interactive sessions, messages are streamed to standard error so that R scripts can easily filter them out from normal output by redirecting stderr. If a sink is active (either on output or on messages) messages are always streamed to stderr. These exceptions ensure consistency of behaviour in interactive and non-interactive sessions, and when sinks are active.
are_na
Test for missing values
CRAN · 1.2.0 · rlang/man/are_na.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#questioninglifecycle-questioning.svgoptions: alt='[Questioning]'[Questioning] are_na() checks for missing values in a vector and is equivalent to [base:NA]base::is.na(). It is a vectorised predicate, meaning that its output is always the same length as its input. On the other hand, is_na() is a scalar predicate and always returns a scalar boolean, TRUE or FALSE. If its input is not scalar, it returns FALSE. Finally, there are typed versions that check for particular [=missing]missing types.

Aliases
are_nais_nais_lgl_nais_int_nais_dbl_nais_chr_nais_cpl_na
Keywords
internal
Usage
are_na(x) is_na(x) is_lgl_na(x) is_int_na(x) is_dbl_na(x) is_chr_na(x) is_cpl_na(x)
Arguments
x
An object to test
Details
The scalar predicates accept non-vector inputs. They are equivalent to [=is_null]is_null() in that respect. In contrast the vectorised predicate are_na() requires a vector input since it is defined over vector values.
Examples
# are_na() is vectorised and works regardless of the type are_na(c(1, 2, NA)) are_na(c(1L, NA, 3L)) # is_na() checks for scalar input and works for all types is_na(NA) is_na(na_dbl) is_na(character(0)) # There are typed versions as well: is_lgl_na(NA) is_lgl_na(na_dbl)
Custom sections
Life cycle
These functions might be moved to the vctrs package at some point. This is why they are marked as questioning.
arg_match
Match an argument to a character vector
CRAN · 1.2.0 · rlang/man/arg_match.Rd · 2026-05-07

This is equivalent to [base:match.arg]base::match.arg() with a few differences: Partial matches trigger an error. Error messages are a bit more informative and obey the tidyverse standards. arg_match() derives the possible values from the [=caller_fn]caller function. arg_match0() is a bare-bones version if performance is at a premium. It requires a string as arg and explicit character values. For convenience, arg may also be a character vector containing every element of values, possibly permuted. In this case, the first element of arg is used.

Aliases
arg_matcharg_match0
Usage
arg_match( arg, values = NULL, ..., multiple = FALSE, error_arg = caller_arg(arg), error_call = caller_env() ) arg_match0(arg, values, arg_nm = caller_arg(arg), error_call = caller_env())
Arguments
arg
A symbol referring to an argument accepting strings.
values
A character vector of possible values that arg can take.
...
These dots are for future extensions and must be empty.
multiple
Whether arg may contain zero or several values.
error_arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
error_call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
arg_nm
Same as error_arg.
Value
The string supplied to arg.
Examples
fn <- function(x = c("foo", "bar")) arg_match(x) fn("bar") # Throws an informative error for mismatches: try(fn("b")) try(fn("baz")) # Use the bare-bones version with explicit values for speed: arg_match0("bar", c("foo", "bar", "baz")) # For convenience: fn1 <- function(x = c("bar", "baz", "foo")) fn3(x) fn2 <- function(x = c("baz", "bar", "foo")) fn3(x) fn3 <- function(x) arg_match0(x, c("foo", "bar", "baz")) fn1() fn2("bar") try(fn3("zoo"))
See also
[=check_required]check_required()
args_data_masking
Argument type: data-masking
CRAN · 1.2.0 · rlang/man/args_data_masking.Rd · 2026-05-07

This page describes the <data-masking> argument modifier which indicates that the argument uses tidy evaluation with data masking. If you've never heard of tidy evaluation before, start with vignette("programming", package = "dplyr").

Aliases
args_data_masking
Keywords
internal
See also
html[=topic-data-mask]What is data-masking and why do I need \\?[=topic-data-mask]What is data-masking and why do I need curly-curly?. html[=topic-data-mask-programming]Data mask programming patterns[=topic-data-mask-programming]Data mask programming patterns.
Custom sections
Key terms
The primary motivation for tidy evaluation in tidyverse packages is that it provides data masking, which blurs the distinction between two types of variables: env-variables are "programming" variables and live in an environment. They are usually created with <-. Env-variables can be any type of R object. data-variables are "statistical" variables and live in a data frame. They usually come from data files (e.g. .csv, .xls), or are created by manipulating existing variables. Data-variables live inside data frames, so must be vectors.
General usage
Data masking allows you to refer to variables in the "current" data frame (usually supplied in the .data argument), without any other prefix. It's what allows you to type (e.g.) filter(diamonds, x == 0 & y == 0 & z == 0) instead of diamonds[diamonds$x == 0 & diamonds$y == 0 & diamonds$z == 0, ].
Indirection in wrapper functions
The main challenge of data masking arises when you introduce some indirection, i.e. instead of directly typing the name of a variable you want to supply it in a function argument or character vector. There are two main cases: If you want the user to supply the variable (or function of variables) in a function argument, embrace the argument, e.g. filter(df, var ). html<div class="sourceCode">dist_summary <- function(df, var) \ df %>% summarise(n = n(), min = min(\\ var \\), max = max(\\ var \\)) \ mtcars %>% dist_summary(mpg) mtcars %>% group_by(cyl) %>% dist_summary(mpg) html</div> If you have the column name as a character vector, use the .data pronoun, e.g. summarise(df, mean = mean(.data[[var]])). html<div class="sourceCode">for (var in names(mtcars)) \ mtcars %>% count(.data[[var]]) %>% print() \ lapply(names(mtcars), function(var) mtcars %>% count(.data[[var]])) html</div> (Note that the contents of [[, e.g. var above, is never evaluated in the data environment so you don't need to worry about a data-variable called var causing problems.)
Dot-dot-dot (...)
When this modifier is applied to ..., there is one other useful technique which solves the problem of creating a new variable with a name supplied by the user. Use the interpolation syntax from the glue package: "var" := expression. (Note the use of := instead of = to enable this syntax). html<div class="sourceCode">var_name <- "l100km" mtcars %>% mutate("\var_name\" := 235 / mpg) html</div> Note that ... automatically provides indirection, so you can use it as is (i.e. without embracing) inside a function: html<div class="sourceCode">grouped_mean <- function(df, var, ...) \ df %>% group_by(...) %>% summarise(mean = mean(\\ var \\)) \ html</div>
args_dots_empty
Helper for consistent documentation of empty dots
CRAN · 1.2.0 · rlang/man/args_dots_empty.Rd · 2026-05-07

Use @inheritParams rlang::args_dots_empty in your package to consistently document ... that must be empty.

Aliases
args_dots_empty
Keywords
internal
Arguments
...
These dots are for future extensions and must be empty.
args_dots_used
Helper for consistent documentation of used dots
CRAN · 1.2.0 · rlang/man/args_dots_used.Rd · 2026-05-07

Use @inheritParams rlang::args_dots_used in your package to consistently document ... that must be used.

Aliases
args_dots_used
Keywords
internal
Arguments
...
Arguments passed to methods.
args_error_context
Documentation anchor for error arguments
CRAN · 1.2.0 · rlang/man/args_error_context.Rd · 2026-05-07

Use @inheritParams rlang::args_error_context in your package to document arg and call arguments (or equivalently their prefixed versions error_arg and error_call). arg parameters should be formatted as argument (e.g. using cli's .arg specifier) and included in error messages. See also [=caller_arg]caller_arg(). call parameters should be included in error conditions in a field named call. An easy way to do this is by passing a call argument to [=abort]abort(). See also [=local_error_call]local_error_call().

Aliases
args_error_context
Arguments
arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
error_arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
error_call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
as_box
Convert object to a box
CRAN · 1.2.0 · rlang/man/as_box.Rd · 2026-05-07

as_box() boxes its input only if it is not already a box. The class is also checked if supplied. as_box_if() boxes its input only if it not already a box, or if the predicate .p returns TRUE.

Aliases
as_boxas_box_if
Usage
as_box(x, class = NULL) as_box_if(.x, .p, .class = NULL, ...)
Arguments
x, .x
An R object.
class, .class
A box class. If the input is already a box of that class, it is returned as is. If the input needs to be boxed, class is passed to [=new_box]new_box().
.p
A predicate function.
...
Arguments passed to .p.
as_closure
Transform to a closure
CRAN · 1.2.0 · rlang/man/as_closure.Rd · 2026-05-07

as_closure() is like [=as_function]as_function() but also wraps primitive functions inside closures. Some special control flow primitives like if, for, or break can't be wrapped and will cause an error.

Aliases
as_closure
Keywords
internal
Usage
as_closure(x, env = caller_env())
Arguments
x
A function or formula. If a function, it is used as is. If a formula, e.g. ~ .x + 2, it is converted to a function with up to two arguments: .x (single argument) or .x and .y (two arguments). The . placeholder can be used instead of .x. This allows you to create very compact anonymous functions (lambdas) with up to two inputs. Functions created from formulas have a special class. Use is_lambda() to test for it. If a string, the function is looked up in env. Note that this interface is strictly for user convenience because of the scoping issues involved. Package developers should avoid supplying functions by name and instead supply them by value.
env
Environment in which to fetch the function in case x is a string.
Examples
# Primitive functions are regularised as closures as_closure(list) as_closure("list") # Operators have `.x` and `.y` as arguments, just like lambda # functions created with the formula syntax: as_closure(`+`) as_closure(`~`)
as_data_mask
Create a data mask
CRAN · 1.2.0 · rlang/man/as_data_mask.Rd · 2026-05-07

A [=topic-data-mask]data mask is an environment (or possibly multiple environments forming an ancestry) containing user-supplied objects. Objects in the mask have precedence over objects in the environment (i.e. they mask those objects). Many R functions evaluate quoted expressions in a data mask so these expressions can refer to objects within the user data. These functions let you construct a tidy eval data mask manually. They are meant for developers of tidy eval interfaces rather than for end users.

Aliases
as_data_maskas_data_pronounnew_data_mask
Usage
as_data_mask(data) as_data_pronoun(data) new_data_mask(bottom, top = bottom)
Arguments
data
A data frame or named vector of masking data.
bottom
The environment containing masking objects if the data mask is one environment deep. The bottom environment if the data mask comprises multiple environment. If you haven't supplied top, this must be an environment that you own, i.e. that you have created yourself.
top
The last environment of the data mask. If the data mask is only one environment deep, top should be the same as bottom. This must be an environment that you own, i.e. that you have created yourself. The parent of top will be changed by the tidy eval engine and should be considered undetermined. Never make assumption about the parent of top.
Value
A data mask that you can supply to [=eval_tidy]eval_tidy().
Examples
# Evaluating in a tidy evaluation environment enables all tidy # features: mask <- as_data_mask(mtcars) eval_tidy(quo(letters), mask) # You can install new pronouns in the mask: mask$.pronoun <- as_data_pronoun(list(foo = "bar", baz = "bam")) eval_tidy(quo(.pronoun$foo), mask) # In some cases the data mask can leak to the user, for example if # a function or formula is created in the data mask environment: cyl <- "user variable from the context" fn <- eval_tidy(quote(function() cyl), mask) fn() # If new objects are created in the mask, they persist in the # subsequent calls: eval_tidy(quote(new <- cyl + am), mask) eval_tidy(quote(new * 2), mask) # In some cases your data mask is a whole chain of environments # rather than a single environment. You'll have to use # `new_data_mask()` and let it know about the bottom of the mask # (the last child of the environment chain) and the topmost parent. # A common situation where you'll want a multiple-environment mask # is when you include functions in your mask. In that case you'll # put functions in the top environment and data in the bottom. This # will prevent the data from overwriting the functions. top <- new_environment(list(`+` = base::paste, c = base::paste)) # Let's add a middle environment just for sport: middle <- env(top) # And finally the bottom environment containing data: bottom <- env(middle, a = "a", b = "b", c = "c") # We can now create a mask by supplying the top and bottom # environments: mask <- new_data_mask(bottom, top = top) # This data mask can be passed to eval_tidy() instead of a list or # data frame: eval_tidy(quote(a + b + c), data = mask) # Note how the function `c()` and the object `c` are looked up # properly because of the multi-level structure: eval_tidy(quote(c(a, b, c)), data = mask) # new_data_mask() does not create data pronouns, but # data pronouns can be added manually: mask$.fns <- as_data_pronoun(top) # The `.data` pronoun should generally be created from the # mask. This will ensure data is looked up throughout the whole # ancestry. Only non-function objects are looked up from this # pronoun: mask$.data <- as_data_pronoun(mask) mask$.data$c # Now we can reference values with the pronouns: eval_tidy(quote(c(.data$a, .data$b, .data$c)), data = mask)
Custom sections
Why build a data mask?
Most of the time you can just call [=eval_tidy]eval_tidy() with a list or a data frame and the data mask will be constructed automatically. There are three main use cases for manual creation of data masks: When [=eval_tidy]eval_tidy() is called with the same data in a tight loop. Because there is some overhead to creating tidy eval data masks, constructing the mask once and reusing it for subsequent evaluations may improve performance. When several expressions should be evaluated in the exact same environment because a quoted expression might create new objects that can be referred in other quoted expressions evaluated at a later time. One example of this is tibble::lst() where new columns can refer to previous ones. When your data mask requires special features. For instance the data frame columns in dplyr data masks are implemented with [base:delayedAssign]active bindings.
Building your own data mask
Unlike [base:eval]base::eval() which takes any kind of environments as data mask, [=eval_tidy]eval_tidy() has specific requirements in order to support [=nse-defuse]quosures. For this reason you can't supply bare environments. There are two ways of constructing an rlang data mask manually: as_data_mask() transforms a list or data frame to a data mask. It automatically installs the data pronoun .data. new_data_mask() is a bare bones data mask constructor for environments. You can supply a bottom and a top environment in case your data mask comprises multiple environments (see section below). Unlike as_data_mask() it does not install the .data pronoun so you need to provide one yourself. You can provide a pronoun constructed with as_data_pronoun() or your own pronoun class. as_data_pronoun() will create a pronoun from a list, an environment, or an rlang data mask. In the latter case, the whole ancestry is looked up from the bottom to the top of the mask. Functions stored in the mask are bypassed by the pronoun. Once you have built a data mask, simply pass it to [=eval_tidy]eval_tidy() as the data argument. You can repeat this as many times as needed. Note that any objects created there (perhaps because of a call to <-) will persist in subsequent evaluations.
Top and bottom of data mask
In some cases you'll need several levels in your data mask. One good reason is when you include functions in the mask. It's a good idea to keep data objects one level lower than function objects, so that the former cannot override the definitions of the latter (see examples). In that case, set up all your environments and keep track of the bottom child and the top parent. You'll need to pass both to new_data_mask(). Note that the parent of the top environment is completely undetermined, you shouldn't expect it to remain the same at all times. This parent is replaced during evaluation by [=eval_tidy]eval_tidy() to one of the following environments: The default environment passed as the env argument of eval_tidy(). The environment of the current quosure being evaluated, if applicable. Consequently, all masking data should be contained between the bottom and top environment of the data mask.
as_environment
Coerce to an environment
CRAN · 1.2.0 · rlang/man/as_environment.Rd · 2026-05-07

as_environment() coerces named vectors (including lists) to an environment. The names must be unique. If supplied an unnamed string, it returns the corresponding package environment (see [=pkg_env]pkg_env()).

Aliases
as_environment
Usage
as_environment(x, parent = NULL)
Arguments
x
An object to coerce.
parent
A parent environment, [=empty_env]empty_env() by default. This argument is only used when x is data actually coerced to an environment (as opposed to data representing an environment, like NULL representing the empty environment).
Details
If x is an environment and parent is not NULL, the environment is duplicated before being set a new parent. The return value is therefore a different environment than x.
Examples
# Coerce a named vector to an environment: env <- as_environment(mtcars) # By default it gets the empty environment as parent: identical(env_parent(env), empty_env()) # With strings it is a handy shortcut for pkg_env(): as_environment("base") as_environment("rlang") # With NULL it returns the empty environment: as_environment(NULL)
as_function
Convert to function
CRAN · 1.2.0 · rlang/man/as_function.Rd · 2026-05-07

as_function() transforms a one-sided formula into a function. This powers the lambda syntax in packages like purrr.

Aliases
as_functionis_lambda
Usage
as_function( x, env = global_env(), ..., arg = caller_arg(x), call = caller_env() ) is_lambda(x)
Arguments
x
A function or formula. If a function, it is used as is. If a formula, e.g. ~ .x + 2, it is converted to a function with up to two arguments: .x (single argument) or .x and .y (two arguments). The . placeholder can be used instead of .x. This allows you to create very compact anonymous functions (lambdas) with up to two inputs. Functions created from formulas have a special class. Use is_lambda() to test for it. If a string, the function is looked up in env. Note that this interface is strictly for user convenience because of the scoping issues involved. Package developers should avoid supplying functions by name and instead supply them by value.
env
Environment in which to fetch the function in case x is a string.
...
These dots are for future extensions and must be empty.
arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
Examples
f <- as_function(~ .x + 1) f(10) g <- as_function(~ -1 * .) g(4) h <- as_function(~ .x - .y) h(6, 3) # Functions created from a formula have a special class: is_lambda(f) is_lambda(as_function(function() "foo"))
as_label
Create a default name for an R object
CRAN · 1.2.0 · rlang/man/as_label.Rd · 2026-05-07

as_label() transforms R objects into a short, human-readable description. You can use labels to: Display an object in a concise way, for example to labellise axes in a graphical plot. Give default names to columns in a data frame. In this case, labelling is the first step before name repair. See also [=as_name]as_name() for transforming symbols back to a string. Unlike as_label(), as_name() is a well defined operation that guarantees the roundtrip symbol -> string -> symbol. In general, if you don't know for sure what kind of object you're dealing with (a call, a symbol, an unquoted constant), use as_label() and make no assumption about the resulting string. If you know you have a symbol and need the name of the object it refers to, use [=as_name]as_name(). For instance, use as_label() with objects captured with enquo() and as_name() with symbols captured with ensym().

Aliases
as_label
Usage
as_label(x)
Arguments
x
An object.
Examples
# as_label() is useful with quoted expressions: as_label(expr(foo(bar))) as_label(expr(foobar)) # It works with any R object. This is also useful for quoted # arguments because the user might unquote constant objects: as_label(1:3) as_label(base::list)
See also
[=as_name]as_name() for transforming symbols back to a string deterministically.
Custom sections
Transformation to string
Quosures are [=quo_squash]squashed before being labelled. Symbols are transformed to string with as_string(). Calls are abbreviated. Numbers are represented as such. Other constants are represented by their type, such as <dbl> or <data.frame>.
as_name
Extract names from symbols
CRAN · 1.2.0 · rlang/man/as_name.Rd · 2026-05-07

as_name() converts [=sym]symbols to character strings. The conversion is deterministic. That is, the roundtrip symbol -> name -> symbol always gives the same result. Use as_name() when you need to transform a symbol to a string to refer to an object by its name. Use [=as_label]as_label() when you need to transform any kind of object to a string to represent that object with a short description.

Aliases
as_name
Usage
as_name(x)
Arguments
x
A string or symbol, possibly wrapped in a quosure. If a string, the attributes are removed, if any.
Details
rlang::as_name() is the opposite of [base:name]base::as.name(). If you're writing base R code, we recommend using [base:name]base::as.symbol() which is an alias of as.name() that follows a more modern terminology (R types instead of S modes).
Value
A character vector of length 1.
Examples
# Let's create some symbols: foo <- quote(foo) bar <- sym("bar") # as_name() converts symbols to strings: foo as_name(foo) typeof(bar) typeof(as_name(bar)) # as_name() unwraps quosured symbols automatically: as_name(quo(foo))
See also
[=as_label]as_label() for converting any object to a single string suitable as a label. [=as_string]as_string() for a lower-level version that doesn't unwrap quosures.
as_string
Cast symbol to string
CRAN · 1.2.0 · rlang/man/as_string.Rd · 2026-05-07

as_string() converts [=sym]symbols to character strings.

Aliases
as_string
Usage
as_string(x)
Arguments
x
A string or symbol. If a string, the attributes are removed, if any.
Value
A character vector of length 1.
Examples
# Let's create some symbols: foo <- quote(foo) bar <- sym("bar") # as_string() converts symbols to strings: foo as_string(foo) typeof(bar) typeof(as_string(bar))
See also
[=as_name]as_name() for a higher-level variant of as_string() that automatically unwraps quosures.
Custom sections
Unicode tags
Unlike [base:name]base::as.symbol() and [base:name]base::as.name(), as_string() automatically transforms unicode tags such as "<U+5E78>" to the proper UTF-8 character. This is important on Windows because: R on Windows has no UTF-8 support, and uses native encoding instead. The native encodings do not cover all Unicode characters. For example, Western encodings do not support CKJ characters. When a lossy UTF-8 -> native transformation occurs, uncovered characters are transformed to an ASCII unicode tag like "<U+5E78>". Symbols are always encoded in native. This means that transforming the column names of a data frame to symbols might be a lossy operation. This operation is very common in the tidyverse because of data masking APIs like dplyr where data frames are transformed to environments. While the names of a data frame are stored as a character vector, the bindings of environments are stored as symbols. Because it reencodes the ASCII unicode tags to their UTF-8 representation, the string -> symbol -> string roundtrip is more stable with as_string().
as_utf8_character
Coerce to a character vector and attempt encoding conversion
CRAN · 1.2.0 · rlang/man/as_utf8_character.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] Unlike specifying the encoding argument in as_string() and as_character(), which is only declarative, these functions actually attempt to convert the encoding of their input. There are two possible cases: The string is tagged as UTF-8 or latin1, the only two encodings for which R has specific support. In this case, converting to the same encoding is a no-op, and converting to native always works as expected, as long as the native encoding, the one specified by the LC_CTYPE locale has support for all characters occurring in the strings. Unrepresentable characters are serialised as unicode points: "<U+xxxx>". The string is not tagged. R assumes that it is encoded in the native encoding. Conversion to native is a no-op, and conversion to UTF-8 should work as long as the string is actually encoded in the locale codeset. When translating to UTF-8, the strings are parsed for serialised unicode points (e.g. strings looking like "U+xxxx") with [=chr_unserialise_unicode]chr_unserialise_unicode(). This helps to alleviate the effects of character-to-symbol-to-character roundtrips on systems with non-UTF-8 native encoding.

Aliases
as_utf8_character
Keywords
internal
Usage
as_utf8_character(x)
Arguments
x
An object to coerce.
Examples
# Let's create a string marked as UTF-8 (which is guaranteed by the # Unicode escaping in the string): utf8 <- "caf9" Encoding(utf8) charToRaw(utf8)
bare-type-predicates
Bare type predicates
CRAN · 1.2.0 · rlang/man/bare-type-predicates.Rd · 2026-05-07

These predicates check for a given type but only return TRUE for bare R objects. Bare objects have no class attributes. For example, a data frame is a list, but not a bare list.

Aliases
bare-type-predicatesis_bare_listis_bare_atomicis_bare_vectoris_bare_doubleis_bare_complexis_bare_integeris_bare_numericis_bare_characteris_bare_logicalis_bare_rawis_bare_stringis_bare_bytes
Usage
is_bare_list(x, n = NULL) is_bare_atomic(x, n = NULL) is_bare_vector(x, n = NULL) is_bare_double(x, n = NULL) is_bare_complex(x, n = NULL) is_bare_integer(x, n = NULL) is_bare_numeric(x, n = NULL) is_bare_character(x, n = NULL) is_bare_logical(x, n = NULL) is_bare_raw(x, n = NULL) is_bare_string(x, n = NULL) is_bare_bytes(x, n = NULL)
Arguments
x
Object to be tested.
n
Expected length of a vector.
Details
The predicates for vectors include the n argument for pattern-matching on the vector length. Like [=is_atomic]is_atomic() and unlike base R is.atomic() for R < 4.4.0, is_bare_atomic() does not return TRUE for NULL. Starting in R 4.4.0, is.atomic(NULL) returns FALSE. Unlike base R is.numeric(), is_bare_double() only returns TRUE for floating point numbers.
See also
type-predicates, scalar-type-predicates
box
Box a value
CRAN · 1.2.0 · rlang/man/box.Rd · 2026-05-07

new_box() is similar to [base:AsIs]base::I() but it protects a value by wrapping it in a scalar list rather than by adding an attribute. unbox() retrieves the boxed value. is_box() tests whether an object is boxed with optional class. as_box() ensures that a value is wrapped in a box. as_box_if() does the same but only if the value matches a predicate.

Aliases
boxnew_boxis_boxunbox
Usage
new_box(.x, class = NULL, ...) is_box(x, class = NULL) unbox(box)
Arguments
class
For new_box(), an additional class for the boxed value (in addition to rlang_box). For is_box(), a class or vector of classes passed to [=inherits_all]inherits_all().
...
Additional attributes passed to [base:structure]base::structure().
x, .x
An R object.
box
A boxed value to unbox.
Examples
boxed <- new_box(letters, "mybox") is_box(boxed) is_box(boxed, "mybox") is_box(boxed, "otherbox") unbox(boxed) # as_box() avoids double-boxing: boxed2 <- as_box(boxed, "mybox") boxed2 unbox(boxed2) # Compare to: boxed_boxed <- new_box(boxed, "mybox") boxed_boxed unbox(unbox(boxed_boxed)) # Use `as_box_if()` with a predicate if you need to ensure a box # only for a subset of values: as_box_if(NULL, is_null, "null_box") as_box_if("foo", is_null, "null_box")
bytes-class
Human readable memory sizes
CRAN · 1.2.0 · rlang/man/bytes-class.Rd · 2026-05-07

Construct, manipulate and display vectors of byte sizes. These are numeric vectors, so you can compare them numerically, but they can also be compared to human readable values such as '10MB'. parse_bytes() takes a character vector of human-readable bytes and returns a structured bytes vector. as_bytes() is a generic conversion function for objects representing bytes. Note: A bytes() constructor will be exported soon.

Aliases
bytes-classas_bytesparse_bytes
Usage
as_bytes(x) parse_bytes(x)
Arguments
x
A numeric or character vector. Character representations can use shorthand sizes (see examples).
Details
These memory sizes are always assumed to be base 1000, rather than 1024.
Examples
parse_bytes("1") parse_bytes("1K") parse_bytes("1Kb") parse_bytes("1KiB") parse_bytes("1MB") parse_bytes("1KB") < "1MB" sum(parse_bytes(c("1MB", "5MB", "500KB")))
call2
Create a call
CRAN · 1.2.0 · rlang/man/call2.Rd · 2026-05-07

Quoted function calls are one of the two types of [=is_symbolic]symbolic objects in R. They represent the action of calling a function, possibly with arguments. There are two ways of creating a quoted call: By [=nse-defuse]quoting it. Quoting prevents functions from being called. Instead, you get the description of the function call as an R object. That is, a quoted function call. By constructing it with [base:call]base::call(), [base:call]base::as.call(), or call2(). In this case, you pass the call elements (the function to call and the arguments to call it with) separately. See section below for the difference between call2() and the base constructors.

Aliases
call2
Usage
call2(.fn, ..., .ns = NULL)
Arguments
.fn
Function to call. Must be a callable object: a string, symbol, call, or a function.
...
<[=dyn-dots]dynamic> Arguments for the function call. Empty arguments are preserved.
.ns
Namespace with which to prefix .fn. Must be a string or symbol.
Examples
# fn can either be a string, a symbol or a call call2("f", a = 1) call2(quote(f), a = 1) call2(quote(f()), a = 1) #' Can supply arguments individually or in a list call2(quote(f), a = 1, b = 2) call2(quote(f), !!!list(a = 1, b = 2)) # Creating namespaced calls is easy: call2("fun", arg = quote(baz), .ns = "mypkg") # Empty arguments are preserved: call2("[", quote(x), , drop = )
See also
[=call_modify]call_modify()
Custom sections
Difference with base constructors
call2() is more flexible than base::call(): The function to call can be a string or a [=is_callable]callable object: a symbol, another call (e.g. a $ or [[ call), or a function to inline. base::call() only supports strings and you need to use base::as.call() to construct a call with a callable object. html<div class="sourceCode">call2(list, 1, 2) as.call(list(list, 1, 2)) html</div> The .ns argument is convenient for creating namespaced calls. html<div class="sourceCode">call2("list", 1, 2, .ns = "base") # Equivalent to ns_call <- call("::", as.symbol("list"), as.symbol("base")) as.call(list(ns_call, 1, 2)) html</div> call2() has [=list2]dynamic dots support. You can splice lists of arguments with !!! or unquote an argument name with glue syntax. html<div class="sourceCode">args <- list(na.rm = TRUE, trim = 0) call2("mean", 1:10, !!!args) # Equivalent to as.call(c(list(as.symbol("mean"), 1:10), args)) html</div>
Caveats of inlining objects in calls
call2() makes it possible to inline objects in calls, both in function and argument positions. Inlining an object or a function has the advantage that the correct object is used in all environments. If all components of the code are inlined, you can even evaluate in the [=empty_env]empty environment. However inlining also has drawbacks. It can cause issues with NSE functions that expect symbolic arguments. The objects may also leak in representations of the call stack, such as [=traceback]traceback().
call_args
Extract arguments from a call
CRAN · 1.2.0 · rlang/man/call_args.Rd · 2026-05-07

Extract arguments from a call

Aliases
call_argscall_args_names
Usage
call_args(call) call_args_names(call)
Arguments
call
A defused call.
Value
A named list of arguments.
Examples
call <- quote(f(a, b)) # Subsetting a call returns the arguments converted to a language # object: call[-1] # On the other hand, call_args() returns a regular list that is # often easier to work with: str(call_args(call)) # When the arguments are unnamed, a vector of empty strings is # supplied (rather than NULL): call_args_names(call)
See also
[=fn_fmls]fn_fmls() and [=fn_fmls_names]fn_fmls_names()
call_fn
Extract function from a call
CRAN · 1.2.0 · rlang/man/call_fn.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated] Deprecated in rlang 0.4.11.

Aliases
call_fn
Keywords
internal
Usage
call_fn(call, env = caller_env())
Arguments
call, env
htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated]
call_inspect
Inspect a call
CRAN · 1.2.0 · rlang/man/call_inspect.Rd · 2026-05-07

This function is a wrapper around [base:match.call]base::match.call(). It returns its own function call.

Aliases
call_inspect
Usage
call_inspect(...)
Arguments
...
Arguments to display in the returned call.
Examples
# When you call it directly, it simply returns what you typed call_inspect(foo(bar), "" %>% identity()) # Pass `call_inspect` to functionals like `lapply()` or `map()` to # inspect the calls they create around the supplied function lapply(1:3, call_inspect)
call_match
Match supplied arguments to function definition
CRAN · 1.2.0 · rlang/man/call_match.Rd · 2026-05-07

call_match() is like [=match.call]match.call() with these differences: It supports matching missing argument to their defaults in the function definition. It requires you to be a little more specific in some cases. Either all arguments are inferred from the call stack or none of them are (see the Inference section).

Aliases
call_match
Usage
call_match( call = NULL, fn = NULL, ..., defaults = FALSE, dots_env = NULL, dots_expand = TRUE )
Arguments
call
A call. The arguments will be matched to fn.
fn
A function definition to match arguments to.
...
These dots must be empty.
defaults
Whether to match missing arguments to their defaults.
dots_env
An execution environment where to find dots. If supplied and dots exist in this environment, and if call includes ..., the forwarded dots are matched to numbered dots (e.g. ..1, ..2, etc). By default this is set to the empty environment which means that ... expands to nothing.
dots_expand
If FALSE, arguments passed through ... will not be spliced into call. Instead, they are gathered in a pairlist and assigned to an argument named .... Gathering dots arguments is useful if you need to separate them from the other named arguments. Note that the resulting call is not meant to be evaluated since R does not support passing dots through a named argument, even if named "...".
Examples
# `call_match()` supports matching missing arguments to their # defaults fn <- function(x = "default") fn call_match(quote(fn()), fn) call_match(quote(fn()), fn, defaults = TRUE)
Custom sections
Inference from the call stack
When call is not supplied, it is inferred from the call stack along with fn and dots_env. call and fn are inferred from the calling environment: sys.call(sys.parent()) and sys.function(sys.parent()). dots_env is inferred from the caller of the calling environment: caller_env(2). If call is supplied, then you must supply fn as well. Also consider supplying dots_env as it is set to the empty environment when not inferred.
call_modify
Modify the arguments of a call
CRAN · 1.2.0 · rlang/man/call_modify.Rd · 2026-05-07

If you are working with a user-supplied call, make sure the arguments are standardised with [=call_match]call_match() before modifying the call.

Aliases
call_modify
Usage
call_modify( .call, ..., .homonyms = c("keep", "first", "last", "error"), .standardise = NULL, .env = caller_env() )
Arguments
.call
Can be a call, a formula quoting a call in the right-hand side, or a frame object from which to extract the call expression.
...
<[=dyn-dots]dynamic> Named or unnamed expressions (constants, names or calls) used to modify the call. Use [=zap]zap() to remove arguments. Empty arguments are preserved.
.homonyms
How to treat arguments with the same name. The default, "keep", preserves these arguments. Set .homonyms to "first" to only keep the first occurrences, to "last" to keep the last occurrences, and to "error" to raise an informative error and indicate what arguments have duplicated names.
.standardise, .env
Deprecated as of rlang 0.3.0. Please call [=call_match]call_match() manually.
Value
A quosure if .call is a quosure, a call otherwise.
Examples
call <- quote(mean(x, na.rm = TRUE)) # Modify an existing argument call_modify(call, na.rm = FALSE) call_modify(call, x = quote(y)) # Remove an argument call_modify(call, na.rm = zap()) # Add a new argument call_modify(call, trim = 0.1) # Add an explicit missing argument: call_modify(call, na.rm = ) # Supply a list of new arguments with `!!!` newargs <- list(na.rm = zap(), trim = 0.1) call <- call_modify(call, !!!newargs) call # Remove multiple arguments by splicing zaps: newargs <- rep_named(c("na.rm", "trim"), list(zap())) call <- call_modify(call, !!!newargs) call # Modify the `...` arguments as if it were a named argument: call <- call_modify(call, ... = ) call call <- call_modify(call, ... = zap()) call # When you're working with a user-supplied call, standardise it # beforehand in case it includes unmatched arguments: user_call <- quote(matrix(x, nc = 3)) call_modify(user_call, ncol = 1) # `call_match()` applies R's argument matching rules. Matching # ensures you're modifying the intended argument. user_call <- call_match(user_call, matrix) user_call call_modify(user_call, ncol = 1) # By default, arguments with the same name are kept. This has # subtle implications, for instance you can move an argument to # last position by removing it and remapping it: call <- quote(foo(bar = , baz)) call_modify(call, bar = zap(), bar = missing_arg()) # You can also choose to keep only the first or last homonym # arguments: args <- list(bar = zap(), bar = missing_arg()) call_modify(call, !!!args, .homonyms = "first") call_modify(call, !!!args, .homonyms = "last")
call_name
Extract function name or namespace of a call
CRAN · 1.2.0 · rlang/man/call_name.Rd · 2026-05-07

call_name() and call_ns() extract the function name or namespace of simple calls as a string. They return NULL for complex calls. Simple calls: foo(), bar::foo(). Complex calls: foo()(), bar::foo, foo$bar(), (function() NULL)(). The is_call_simple() predicate helps you determine whether a call is simple. There are two invariants you can count on: If is_call_simple(x) returns TRUE, call_name(x) returns a string. Otherwise it returns NULL. If is_call_simple(x, ns = TRUE) returns TRUE, call_ns() returns a string. Otherwise it returns NULL.

Aliases
call_namecall_nsis_call_simple
Usage
call_name(call) call_ns(call) is_call_simple(x, ns = NULL)
Arguments
call
A defused call.
x
An object to test.
ns
Whether call is namespaced. If NULL, is_call_simple() is insensitive to namespaces. If TRUE, is_call_simple() detects namespaced calls. If FALSE, it detects unnamespaced calls.
Value
The function name or namespace as a string, or NULL if the call is not named or namespaced.
Examples
# Is the function named? is_call_simple(quote(foo())) is_call_simple(quote(foo[[1]]())) # Is the function namespaced? is_call_simple(quote(list()), ns = TRUE) is_call_simple(quote(base::list()), ns = TRUE) # Extract the function name from quoted calls: call_name(quote(foo(bar))) call_name(quo(foo(bar))) # Namespaced calls are correctly handled: call_name(quote(base::matrix(baz))) # Anonymous and subsetted functions return NULL: call_name(quote(foo$bar())) call_name(quote(foo[[bar]]())) call_name(quote(foo()())) # Extract namespace of a call with call_ns(): call_ns(quote(base::bar())) # If not namespaced, call_ns() returns NULL: call_ns(quote(bar()))
call_standardise
Standardise a call
CRAN · 1.2.0 · rlang/man/call_standardise.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated] Deprecated in rlang 0.4.11 in favour of [=call_match]call_match(). call_standardise() was designed for call wrappers that include an environment like formulas or quosures. The function definition was plucked from that environment. However in practice it is rare to use it with wrapped calls, and then it's easy to forget to supply the environment. For these reasons, we have designed [=call_match]call_match() as a simpler wrapper around [=match.call]match.call(). This is essentially equivalent to [base:match.call]base::match.call(), but with experimental handling of primitive functions.

Aliases
call_standardise
Keywords
internal
Usage
call_standardise(call, env = caller_env())
Arguments
call, env
htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated]
Value
A quosure if call is a quosure, a raw call otherwise.
caller_arg
Find the caller argument for error messages
CRAN · 1.2.0 · rlang/man/caller_arg.Rd · 2026-05-07

caller_arg() is a variant of substitute() or [=ensym]ensym() for arguments that reference other arguments. Unlike substitute() which returns an expression, caller_arg() formats the expression as a single line string which can be included in error messages. When included in an error message, the resulting label should generally be formatted as argument, for instance using the .arg in the cli package. Use @inheritParams rlang::args_error_context to document an arg or error_arg argument that takes error_arg() as default.

Aliases
caller_arg
Arguments
arg
An argument name in the current function.
Examples
arg_checker <- function(x, arg = caller_arg(x), call = caller_env()) cli::cli_abort(".arg arg must be a thingy.", arg = arg, call = call) my_function <- function(my_arg) arg_checker(my_arg) try(my_function(NULL))
catch_cnd
Catch a condition
CRAN · 1.2.0 · rlang/man/catch_cnd.Rd · 2026-05-07

This is a small wrapper around tryCatch() that captures any condition signalled while evaluating its argument. It is useful for situations where you expect a specific condition to be signalled, for debugging, and for unit testing.

Aliases
catch_cnd
Usage
catch_cnd(expr, classes = "condition")
Arguments
expr
Expression to be evaluated with a catching condition handler.
classes
A character vector of condition classes to catch. By default, catches all conditions.
Value
A condition if any was signalled, NULL otherwise.
Examples
catch_cnd(10) catch_cnd(abort("an error")) catch_cnd(signal("my_condition", message = "a condition"))
check_data_frame
Check argument type (data frame)
CRAN · 1.2.0 · rlang/man/check_data_frame.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] Checks that an argument is a data frame, producing a friendly error message on failure.

Aliases
check_data_frame
Concepts
input checkers
Usage
check_data_frame( x, ..., allow_null = FALSE, arg = caller_arg(x), call = caller_env() )
Arguments
x
The argument to check.
...
Additional arguments passed to [=abort]abort().
allow_null
Whether NULL is allowed.
arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
Value
NULL invisibly if the check passes, throws an error otherwise.
Examples
check_data_frame(mtcars) try(check_data_frame(1:5))
See also
Other input checkers: check_type_number, check_type_scalar, stop_input_type()
check_dots_empty
Check that dots are empty
CRAN · 1.2.0 · rlang/man/check_dots_empty.Rd · 2026-05-07

... can be inserted in a function signature to force users to fully name the details arguments. In this case, supplying data in ... is almost always a programming error. This function checks that ... is empty and fails otherwise.

Aliases
check_dots_empty
Concepts
dots checking functions
Usage
check_dots_empty( env = caller_env(), error = NULL, call = caller_env(), action = abort )
Arguments
env
Environment in which to look for ....
error
An optional error handler passed to [=try_fetch]try_fetch(). Use this e.g. to demote an error into a warning.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
action
htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated]
Details
In packages, document ... with this standard tag: html<div class="sourceCode"> @inheritParams rlang::args_dots_empty html</div>
Examples
f <- function(x, ..., foofy = 8) check_dots_empty() x + foofy # This fails because `foofy` can't be matched positionally try(f(1, 4)) # This fails because `foofy` can't be matched partially by name try(f(1, foof = 4)) # Thanks to `...`, it must be matched exactly f(1, foofy = 4)
See also
Other dots checking functions: check_dots_unnamed(), check_dots_used()
check_dots_empty0
Check that dots are empty (low level variant)
CRAN · 1.2.0 · rlang/man/check_dots_empty0.Rd · 2026-05-07

check_dots_empty0() is a more efficient version of [=check_dots_empty]check_dots_empty() with a slightly different interface. Instead of inspecting the current environment for dots, it directly takes .... It is only meant for very low level functions where a couple microseconds make a difference.

Aliases
check_dots_empty0
Keywords
internal
Usage
check_dots_empty0(..., call = caller_env())
Arguments
...
Dots which should be empty.
check_dots_unnamed
Check that all dots are unnamed
CRAN · 1.2.0 · rlang/man/check_dots_unnamed.Rd · 2026-05-07

In functions like paste(), named arguments in ... are often a sign of misspelled argument names. Call check_dots_unnamed() to fail with an error when named arguments are detected.

Aliases
check_dots_unnamed
Concepts
dots checking functions
Usage
check_dots_unnamed( env = caller_env(), error = NULL, call = caller_env(), action = abort )
Arguments
env
Environment in which to look for ....
error
An optional error handler passed to [=try_fetch]try_fetch(). Use this e.g. to demote an error into a warning.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
action
htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated]
Examples
f <- function(..., foofy = 8) check_dots_unnamed() c(...) f(1, 2, 3, foofy = 4) try(f(1, 2, 3, foof = 4))
See also
Other dots checking functions: check_dots_empty(), check_dots_used()
check_dots_used
Check that all dots have been used
CRAN · 1.2.0 · rlang/man/check_dots_used.Rd · 2026-05-07

When ... arguments are passed to a method, the method should match and use these arguments. If this isn't the case, this often indicates a programming error. Call check_dots_used() to fail with an error when unused arguments are detected.

Aliases
check_dots_used
Concepts
dots checking functions
Usage
check_dots_used( env = caller_env(), call = caller_env(), error = NULL, action = deprecated() )
Arguments
env
Environment in which to look for ... and to set up handler.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
error
An optional error handler passed to [=try_fetch]try_fetch(). Use this e.g. to demote an error into a warning.
action
htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated]
Details
In packages, document ... with this standard tag: html<div class="sourceCode"> @inheritParams rlang::args_dots_used html</div> check_dots_used() implicitly calls [=on.exit]on.exit() to check that all elements of ... have been used when the function exits. If you use [=on.exit]on.exit() elsewhere in your function, make sure to use add = TRUE so that you don't override the handler set up by check_dots_used().
Examples
f <- function(...) check_dots_used() g(...) g <- function(x, y, ...) x + y f(x = 1, y = 2) try(f(x = 1, y = 2, z = 3)) try(f(x = 1, y = 2, 3, 4, 5)) # Use an `error` handler to handle the error differently. # For instance to demote the error to a warning: fn <- function(...) check_dots_empty( error = function(cnd) warning(cnd) ) "out" fn()
See also
Other dots checking functions: check_dots_empty(), check_dots_unnamed()
check_exclusive
Check that arguments are mutually exclusive
CRAN · 1.2.0 · rlang/man/check_exclusive.Rd · 2026-05-07

check_exclusive() checks that only one argument is supplied out of a set of mutually exclusive arguments. An informative error is thrown if multiple arguments are supplied.

Aliases
check_exclusive
Usage
check_exclusive(..., .require = TRUE, .frame = caller_env(), .call = .frame)
Arguments
...
Function arguments.
.require
Whether at least one argument must be supplied.
.frame
Environment where the arguments in ... are defined.
.call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
Value
The supplied argument name as a string. If .require is FALSE and no argument is supplied, the empty string "" is returned.
Examples
f <- function(x, y) switch( check_exclusive(x, y), x = message("`x` was supplied."), y = message("`y` was supplied.") ) # Supplying zero or multiple arguments is forbidden try(f()) try(f(NULL, NULL)) # The user must supply one of the mutually exclusive arguments f(NULL) f(y = NULL) # With `.require` you can allow zero arguments f <- function(x, y) switch( check_exclusive(x, y, .require = FALSE), x = message("`x` was supplied."), y = message("`y` was supplied."), message("No arguments were supplied") ) f()
check_required
Check that argument is supplied
CRAN · 1.2.0 · rlang/man/check_required.Rd · 2026-05-07

Throws an error if x is missing.

Aliases
check_required
Usage
check_required(x, arg = caller_arg(x), call = caller_env())
Arguments
x
A function argument. Must be a symbol.
arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
Examples
f <- function(x) check_required(x) # Fails because `x` is not supplied try(f()) # Succeeds f(NULL)
See also
[=arg_match]arg_match()
check_type_number
Check argument type (numbers)
CRAN · 1.2.0 · rlang/man/check_type_number.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] These functions check that an argument is a number, optionally with bounds, and produce friendly error messages otherwise.

Aliases
check_type_numbercheck_number_decimalcheck_number_whole
Concepts
input checkers
Usage
check_number_decimal( x, ..., min = NULL, max = NULL, allow_infinite = TRUE, allow_na = FALSE, allow_null = FALSE, arg = caller_arg(x), call = caller_env() ) check_number_whole( x, ..., min = NULL, max = NULL, allow_infinite = FALSE, allow_na = FALSE, allow_null = FALSE, arg = caller_arg(x), call = caller_env() )
Arguments
x
The argument to check.
...
Additional arguments passed to [=abort]abort().
min
Minimum value (inclusive). If NULL, no lower bound is checked.
max
Maximum value (inclusive). If NULL, no upper bound is checked.
allow_infinite
Whether infinite values are allowed.
allow_na
Whether NA values are allowed.
allow_null
Whether NULL is allowed.
arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
Value
NULL invisibly if the check passes, throws an error otherwise.
Examples
check_number_decimal(3.14) try(check_number_decimal("x")) check_number_whole(42) try(check_number_whole(3.5))
See also
Other input checkers: check_data_frame(), check_type_scalar, stop_input_type()
check_type_scalar
Check argument type (scalar)
CRAN · 1.2.0 · rlang/man/check_type_scalar.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] These functions check that an argument is of the expected scalar type and produce friendly error messages otherwise.

Aliases
check_type_scalarcheck_boolcheck_string
Concepts
input checkers
Usage
check_bool( x, ..., allow_na = FALSE, allow_null = FALSE, arg = caller_arg(x), call = caller_env() ) check_string( x, ..., allow_empty = TRUE, allow_na = FALSE, allow_null = FALSE, arg = caller_arg(x), call = caller_env() )
Arguments
x
The argument to check.
...
Additional arguments passed to [=abort]abort().
allow_na
Whether NA values are allowed.
allow_null
Whether NULL is allowed.
arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
allow_empty
Whether the empty string "" is allowed (check_string() only).
Value
NULL invisibly if the check passes, throws an error otherwise.
Examples
check_bool(TRUE) try(check_bool(1)) check_string("hello") try(check_string(42))
See also
Other input checkers: check_data_frame(), check_type_number, stop_input_type()
child_env
Create a child environment
CRAN · 1.2.0 · rlang/man/child_env.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated] [=env]env() now supports creating child environments, please use it instead.

Aliases
child_env
Keywords
internal
Usage
child_env(.parent, ...)
chr_unserialise_unicode
Translate unicode points to UTF-8
CRAN · 1.2.0 · rlang/man/chr_unserialise_unicode.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] For historical reasons, R translates strings to the native encoding when they are converted to symbols. This string-to-symbol conversion is not a rare occurrence and happens for instance to the names of a list of arguments converted to a call by do.call(). If the string contains unicode characters that cannot be represented in the native encoding, R serialises those as an ASCII sequence representing the unicode point. This is why Windows users with western locales often see strings looking like <U+xxxx>. To alleviate some of the pain, rlang parses strings and looks for serialised unicode points to translate them back to the proper UTF-8 representation. This transformation occurs automatically in functions like [=env_names]env_names() and can be manually triggered with as_utf8_character() and chr_unserialise_unicode().

Aliases
chr_unserialise_unicode
Keywords
internal
Usage
chr_unserialise_unicode(chr)
Arguments
chr
A character vector.
Examples
ascii <- "<U+5E78>" chr_unserialise_unicode(ascii) identical(chr_unserialise_unicode(ascii), "5e78")
Custom sections
Life cycle
This function is experimental.
cnd
Create a condition object
CRAN · 1.2.0 · rlang/man/cnd.Rd · 2026-05-07

These constructors create subclassed conditions, the objects that power the error, warning, and message system in R. cnd() creates bare conditions that only inherit from condition. Conditions created with error_cnd(), warning_cnd(), and message_cnd() inherit from "error", "warning", or "message". error_cnd() creates subclassed errors. See [=rlang_error]"rlang_error". Use [=cnd_signal]cnd_signal() to emit the relevant signal for a particular condition class.

Aliases
cnderror_cndwarning_cndmessage_cnd
Keywords
internal
Usage
cnd(class, ..., message = "", call = NULL, use_cli_format = NULL) error_cnd( class = NULL, ..., message = "", call = NULL, trace = NULL, parent = NULL, use_cli_format = NULL ) warning_cnd( class = NULL, ..., message = "", call = NULL, use_cli_format = NULL ) message_cnd( class = NULL, ..., message = "", call = NULL, use_cli_format = NULL )
Arguments
class
The condition subclass.
...
<[=dyn-dots]dynamic> Named data fields stored inside the condition object.
message
A default message to inform the user about the condition when it is signalled.
call
A function call to be included in the error message. If an execution environment of a running function, the corresponding function call is retrieved.
use_cli_format
Whether to use the cli package to format message. See [=local_use_cli]local_use_cli().
trace
A trace object created by [=trace_back]trace_back().
parent
A parent condition object.
Examples
# Create a condition inheriting only from the S3 class "foo": cnd <- cnd("foo") # Signal the condition to potential handlers. Since this is a bare # condition the signal has no effect if no handlers are set up: cnd_signal(cnd) # When a relevant handler is set up, the signal transfers control # to the handler with_handlers(cnd_signal(cnd), foo = function(c) "caught!") tryCatch(cnd_signal(cnd), foo = function(c) "caught!")
See also
[=cnd_signal]cnd_signal(), [=try_fetch]try_fetch().
cnd_inherits
Does a condition or its ancestors inherit from a class?
CRAN · 1.2.0 · rlang/man/cnd_inherits.Rd · 2026-05-07

Like any R objects, errors captured with catchers like [=tryCatch]tryCatch() have a [=class]class() which you can test with [=inherits]inherits(). However, with chained errors, the class of a captured error might be different than the error that was originally signalled. Use cnd_inherits() to detect whether an error or any of its parent inherits from a class. Whereas inherits() tells you whether an object is a particular kind of error, cnd_inherits() answers the question whether an object is a particular kind of error or has been caused by such an error. Some chained conditions carry parents that are not inherited. See the .inherit argument of [=abort]abort(), [=warn]warn(), and [=inform]inform().

Aliases
cnd_inherits
Usage
cnd_inherits(cnd, class)
Arguments
cnd
A condition to test.
class
A class passed to [=inherits]inherits().
Custom sections
Capture an error with cnd_inherits()
Error catchers like [=tryCatch]tryCatch() and [=try_fetch]try_fetch() can only match the class of a condition, not the class of its parents. To match a class across the ancestry of an error, you'll need a bit of craftiness. Ancestry matching can't be done with tryCatch() at all so you'll need to switch to [=withCallingHandlers]withCallingHandlers(). Alternatively, you can use the experimental rlang function [=try_fetch]try_fetch() which is able to perform the roles of both tryCatch() and withCallingHandlers(). withCallingHandlers() Unlike tryCatch(), withCallingHandlers() does not capture an error. If you don't explicitly jump with an error or a value throw, nothing happens. Since we don't want to throw an error, we'll throw a value using [=callCC]callCC(): html<div class="sourceCode r">f <- function() \ parent <- error_cnd("bar", message = "Bar") abort("Foo", parent = parent) \ cnd <- callCC(function(throw) \ withCallingHandlers( f(), error = function(x) if (cnd_inherits(x, "bar")) throw(x) ) \) class(cnd) #> [1] "rlang_error" "error" "condition" class(cnd$parent) #> [1] "bar" "rlang_error" "error" "condition" html</div> try_fetch() This pattern is easier with [=try_fetch]try_fetch(). Like withCallingHandlers(), it doesn't capture a matching error right away. Instead, it captures it only if the handler doesn't return a [=zap]zap() value. html<div class="sourceCode r">cnd <- try_fetch( f(), error = function(x) if (cnd_inherits(x, "bar")) x else zap() ) class(cnd) #> [1] "rlang_error" "error" "condition" class(cnd$parent) #> [1] "bar" "rlang_error" "error" "condition" html</div> Note that try_fetch() uses cnd_inherits() internally. This makes it very easy to match a parent condition: html<div class="sourceCode r">cnd <- try_fetch( f(), bar = function(x) x ) # This is the parent class(cnd) #> [1] "bar" "rlang_error" "error" "condition" html</div>
cnd_message
Build an error message from parts
CRAN · 1.2.0 · rlang/man/cnd_message.Rd · 2026-05-07

cnd_message() assembles an error message from three generics: cnd_header() cnd_body() cnd_footer() Methods for these generics must return a character vector. The elements are combined into a single string with a newline separator. Bullets syntax is supported, either through rlang (see [=format_error_bullets]format_error_bullets()), or through cli if the condition has use_cli_format set to TRUE. The default method for the error header returns the message field of the condition object. The default methods for the body and footer return the the body and footer fields if any, or empty character vectors otherwise. cnd_message() is automatically called by the conditionMessage() for rlang errors, warnings, and messages. Error classes created with [=abort]abort() only need to implement header, body or footer methods. This provides a lot of flexibility for hierarchies of error classes, for instance you could inherit the body of an error message from a parent class while overriding the header and footer.

Aliases
cnd_messagecnd_headercnd_bodycnd_footer
Usage
cnd_message(cnd, ..., inherit = TRUE, prefix = FALSE) cnd_header(cnd, ...) cnd_body(cnd, ...) cnd_footer(cnd, ...)
Arguments
cnd
A condition object.
...
Arguments passed to methods.
inherit
Wether to include parent messages. Parent messages are printed with a "Caused by error:" prefix, even if prefix is FALSE.
prefix
Whether to print the full message, including the condition prefix (Error:, Warning:, Message:, or Condition:). The prefix mentions the call field if present, and the srcref info if present. If cnd has a parent field (i.e. the condition is chained), the parent messages are included in the message with a Caused by prefix.
Custom sections
Overriding header, body, and footer methods
Sometimes the contents of an error message depends on the state of your checking routine. In that case, it can be tricky to lazily generate error messages with cnd_header(), cnd_body(), and cnd_footer(): you have the choice between overspecifying your error class hierarchies with one class per state, or replicating the type-checking control flow within the cnd_body() method. None of these options are ideal. A better option is to define header, body, or footer fields in your condition object. These can be a static string, a [=as_function]lambda-formula, or a function with the same signature as cnd_header(), cnd_body(), or cnd_footer(). These fields override the message generics and make it easy to generate an error message tailored to the state in which the error was constructed.
cnd_muffle
Muffle a condition
CRAN · 1.2.0 · rlang/man/cnd_muffle.Rd · 2026-05-07

Unlike [=exiting]exiting() handlers, [=calling]calling() handlers must be explicit that they have handled a condition to stop it from propagating to other handlers. Use cnd_muffle() within a calling handler (or as a calling handler, see examples) to prevent any other handlers from being called for that condition.

Aliases
cnd_muffle
Keywords
internal
Usage
cnd_muffle(cnd)
Arguments
cnd
A condition to muffle.
Value
If cnd is mufflable, cnd_muffle() jumps to the muffle restart and doesn't return. Otherwise, it returns FALSE.
Examples
fn <- function() inform("Beware!", "my_particular_msg") inform("On your guard!") "foobar" # Let's install a muffling handler for the condition thrown by `fn()`. # This will suppress all `my_particular_wng` warnings but let other # types of warnings go through: with_handlers(fn(), my_particular_msg = calling(function(cnd) inform("Dealt with this particular message") cnd_muffle(cnd) ) ) # Note how execution of `fn()` continued normally after dealing # with that particular message. # cnd_muffle() can also be passed to with_handlers() as a calling # handler: with_handlers(fn(), my_particular_msg = calling(cnd_muffle) )
Custom sections
Mufflable conditions
Most conditions signalled by base R are mufflable, although the name of the restart varies. cnd_muffle() will automatically call the correct restart for you. It is compatible with the following conditions: warning and message conditions. In this case cnd_muffle() is equivalent to [base:message]base::suppressMessages() and [base:warning]base::suppressWarnings(). Bare conditions signalled with signal() or [=cnd_signal]cnd_signal(). Note that conditions signalled with [base:conditions]base::signalCondition() are not mufflable. Interrupts are sometimes signalled with a resume restart on recent R versions. When this is the case, you can muffle the interrupt with cnd_muffle(). Check if a restart is available with base::findRestart("resume"). If you call cnd_muffle() with a condition that is not mufflable you will cause a new error to be signalled. Errors are not mufflable since they are signalled in critical situations where execution cannot continue safely. Conditions captured with [base:conditions]base::tryCatch(), [=with_handlers]with_handlers() or [=catch_cnd]catch_cnd() are no longer mufflable. Muffling restarts must be called from a calling handler.
cnd_signal
Signal a condition object
CRAN · 1.2.0 · rlang/man/cnd_signal.Rd · 2026-05-07

cnd_signal() takes a condition as argument and emits the corresponding signal. The type of signal depends on the class of the condition: A message is signalled if the condition inherits from "message". This is equivalent to signalling with [=inform]inform() or [base:message]base::message(). A warning is signalled if the condition inherits from "warning". This is equivalent to signalling with [=warn]warn() or [base:warning]base::warning(). An error is signalled if the condition inherits from "error". This is equivalent to signalling with [=abort]abort() or [base:stop]base::stop(). An interrupt is signalled if the condition inherits from "interrupt". This is equivalent to signalling with [=interrupt]interrupt().

Aliases
cnd_signal
Usage
cnd_signal(cnd, ...)
Arguments
cnd
A condition object (see [=cnd]cnd()). If NULL, cnd_signal() returns without signalling a condition.
...
These dots are for future extensions and must be empty.
Examples
# The type of signal depends on the class. If the condition # inherits from "warning", a warning is issued: cnd <- warning_cnd("my_warning_class", message = "This is a warning") cnd_signal(cnd) # If it inherits from "error", an error is raised: cnd <- error_cnd("my_error_class", message = "This is an error") try(cnd_signal(cnd))
See also
[=cnd_type]cnd_type() to determine the type of a condition. [=abort]abort(), [=warn]warn() and [=inform]inform() for creating and signalling structured R conditions in one go. [=try_fetch]try_fetch() for establishing condition handlers for particular condition classes.
cnd_type
What type is a condition?
CRAN · 1.2.0 · rlang/man/cnd_type.Rd · 2026-05-07

Use cnd_type() to check what type a condition is.

Aliases
cnd_type
Keywords
internal
Usage
cnd_type(cnd)
Arguments
cnd
A condition object.
Value
A string, either "condition", "message", "warning", "error" or "interrupt".
Examples
cnd_type(catch_cnd(abort("Abort!"))) cnd_type(catch_cnd(interrupt()))
defusing-advanced
Advanced defusal operators
CRAN · 1.2.0 · rlang/man/defusing-advanced.Rd · 2026-05-07

These advanced operators [=topic-defuse]defuse R expressions. [=expr]expr(), [=enquo]enquo(), and [=enquos]enquos() are sufficient for most purposes but rlang provides these other operations, either for completeness or because they are useful to experts. exprs() is the plural variant of expr(). It returns a list of expressions. It is like [base:list]base::alist() but with [=nse-inject]injection support. quo() and quos() are like expr() and exprs() but return quosures instead of naked expressions. When you are defusing your own local expressions (by opposition to function arguments where non-local expressions are supplied by your users), there is generally no need to attach the current environment in a quosure. See html[=topic-quosure]What are quosures and when are they needed?[=topic-quosure]What are quosures and when are they needed?. enexpr() and enexprs() are like [=enquo]enquo() and [=enquos]enquos() but return naked expressions instead of quosures. These operators should very rarely be used because they lose track of the environment of defused arguments. ensym() and ensyms() are like enexpr() and enexprs() but they throw an error when the defused expressions are not simple symbols. They also support strings which are interpreted as symbols. These functions are modelled on the behaviour of the left-hand side of = and <- where you can supply symbols and strings interchangeably. html<div class="sourceCode">"foo" <- NULL list("foo" = NULL) html</div> enquo0 and enquos0() are like enquo() and enquos() but without injection support. The injection operators !!, !!!, and \\ are not processed, instead they are preserved in the defused expression. This makes it possible to defuse expressions that potentially contain injection operators meant for later use. The trade off is that it makes it harder for users to inject expressions in your function. They have to enable injection explicitly with [=inject]inject(). None of the features of [=dyn-dots]dynamic dots are available when defusing with enquos0(). For instance, trailing empty arguments are not automatically trimmed.

Aliases
defusing-advancedenexprexprsenexprsensymensymsquoquosenquo0enquos0
Keywords
internal
Usage
enexpr(arg) exprs( ..., .named = FALSE, .ignore_empty = c("trailing", "none", "all"), .unquote_names = TRUE ) enexprs( ..., .named = FALSE, .ignore_empty = c("trailing", "none", "all"), .ignore_null = c("none", "all"), .unquote_names = TRUE, .homonyms = c("keep", "first", "last", "error"), .check_assign = FALSE ) ensym(arg) ensyms( ..., .named = FALSE, .ignore_empty = c("trailing", "none", "all"), .ignore_null = c("none", "all"), .unquote_names = TRUE, .homonyms = c("keep", "first", "last", "error"), .check_assign = FALSE ) quo(expr) quos( ..., .named = FALSE, .ignore_empty = c("trailing", "none", "all"), .unquote_names = TRUE ) enquo0(arg) enquos0(...)
Arguments
arg
An unquoted argument name. The expression supplied to that argument is defused and returned.
...
For enexprs(), ensyms() and enquos(), names of arguments to defuse. For exprs() and quos(), expressions to defuse.
.named
If TRUE, unnamed inputs are automatically named with [=as_label]as_label(). This is equivalent to applying [=exprs_auto_name]exprs_auto_name() on the result. If FALSE, unnamed elements are left as is and, if fully unnamed, the list is given minimal names (a vector of ""). If NULL, fully unnamed results are left with NULL names.
.ignore_empty
Whether to ignore empty arguments. Can be one of "trailing", "none", "all". If "trailing", only the last argument is ignored if it is empty. Named arguments are not considered empty.
.unquote_names
Whether to treat := as =. Unlike =, the := syntax supports [=glue-operators]names injection.
.ignore_null
Whether to ignore unnamed null arguments. Can be "none" or "all".
.homonyms
How to treat arguments with the same name. The default, "keep", preserves these arguments. Set .homonyms to "first" to only keep the first occurrences, to "last" to keep the last occurrences, and to "error" to raise an informative error and indicate what arguments have duplicated names.
.check_assign
Whether to check for <- calls. When TRUE a warning recommends users to use = if they meant to match a function parameter or wrap the <- call in curly braces otherwise. This ensures assignments are explicit.
expr
An expression to defuse.
Examples
# `exprs()` is the plural variant of `expr()` exprs(foo, bar, bar) # `quo()` and `quos()` are the quosure variants of `expr()` and `exprs()` quo(foo) quos(foo, bar) # `enexpr()` and `enexprs()` are the naked variants of `enquo()` and `enquos()` my_function1 <- function(arg) enexpr(arg) my_function2 <- function(arg, ...) enexprs(arg, ...) my_function1(1 + 1) my_function2(1 + 1, 10 * 2) # `ensym()` and `ensyms()` are symbol variants of `enexpr()` and `enexprs()` my_function3 <- function(arg) ensym(arg) my_function4 <- function(arg, ...) ensyms(arg, ...) # The user must supply symbols my_function3(foo) my_function4(foo, bar) # Complex expressions are an error try(my_function3(1 + 1)) try(my_function4(1 + 1, 10 * 2)) # `enquo0()` and `enquos0()` disable injection operators automatic_injection <- function(x) enquo(x) no_injection <- function(x) enquo0(x) automatic_injection(foo(!!!1:3)) no_injection(foo(!!!1:3)) # Injection can still be done explicitly inject(no_injection(foo(!!!1:3)))
dev-notes-dots
Development notes - dots.R
CRAN · 1.2.0 · rlang/man/dev-notes-dots.Rd · 2026-05-07

Development notes - dots.R

Aliases
dev-notes-dots
Keywords
internal
Custom sections
.__error_call__. flag in dots collectors
Dots collectors like [=dots_list]dots_list() are a little tricky because they may error out in different situations. Do we want to forward the context, i.e. set the call flag to the calling environment? Collectors throw errors in these cases: While checking their own parameters, in which case the relevant context is the collector itself and we don't forward. While collecting the dots, during evaluation of the supplied arguments. In this case forwarding or not is irrelevant because expressions in ... are evaluated in their own environment which is not connected to the collector's context. While collecting the dots, during argument constraints checks such as determined by the .homonyms argument. In this case we want to forward the context because the caller of the dots collector is the one who determines the constraints for its users.
done
Box a final value for early termination
CRAN · 1.2.0 · rlang/man/done.Rd · 2026-05-07

A value boxed with done() signals to its caller that it should stop iterating. Use it to shortcircuit a loop.

Aliases
doneis_done_box
Usage
done(x) is_done_box(x, empty = NULL)
Arguments
x
For done(), a value to box. For is_done_box(), a value to test.
empty
Whether the box is empty. If NULL, is_done_box() returns TRUE for all done boxes. If TRUE, it returns TRUE only for empty boxes. Otherwise it returns TRUE only for non-empty boxes.
Value
A [=new_box]boxed value.
Examples
done(3) x <- done(3) is_done_box(x)
dot-data
.data and .env pronouns
CRAN · 1.2.0 · data · rlang/man/dot-data.Rd · 2026-05-07

The .data and .env pronouns make it explicit where to find objects when programming with [=topic-data-mask]data-masked functions. html<div class="sourceCode">m <- 10 mtcars %>% mutate(disp = .data$disp * .env$m) html</div> .data retrieves data-variables from the data frame. .env retrieves env-variables from the environment. Because the lookup is explicit, there is no ambiguity between both kinds of variables. Compare: html<div class="sourceCode">disp <- 10 mtcars %>% mutate(disp = .data$disp * .env$disp) mtcars %>% mutate(disp = disp * disp) html</div> Note that .data is only a pronoun, it is not a real data frame. This means that you can't take its names or map a function over the contents of .data. Similarly, .env is not an actual R environment. For instance, it doesn't have a parent and the subsetting operators behave differently.

Aliases
dot-data.datatidyeval-data.env
Keywords
datasets
Custom sections
.data versus the magrittr pronoun .
In a https://magrittr.tidyverse.org/magrittr pipeline, .data is not necessarily interchangeable with the magrittr pronoun .. With grouped data frames in particular, .data represents the current group slice whereas the pronoun . represents the whole data frame. Always prefer using .data in data-masked context.
Where does .data live?
The .data pronoun is automatically created for you by data-masking functions using the [=eval_tidy]tidy eval framework. You don't need to import rlang::.data or use library(rlang) to work with this pronoun. However, the .data object exported from rlang is useful to import in your package namespace to avoid a R CMD check note when referring to objects from the data mask. R does not have any way of knowing about the presence or absence of .data in a particular scope so you need to import it explicitly or equivalently declare it with utils::globalVariables(".data"). Note that rlang::.data is a "fake" pronoun. Do not refer to rlang::.data with the rlang:: qualifier in data masking code. Use the unqualified .data symbol that is automatically put in scope by data-masking functions.
dots_n
How many arguments are currently forwarded in dots?
CRAN · 1.2.0 · rlang/man/dots_n.Rd · 2026-05-07

This returns the number of arguments currently forwarded in ... as an integer.

Aliases
dots_n
Keywords
internal
Usage
dots_n(...)
Arguments
...
Forwarded arguments.
Examples
fn <- function(...) dots_n(..., baz) fn(foo, bar)
dots_splice
Splice lists
CRAN · 1.2.0 · rlang/man/dots_splice.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#deprecatedlifecycle-deprecated.svgoptions: alt='[Deprecated]'[Deprecated] dots_splice() is like [=dots_list]dots_list() but automatically splices list inputs.

Aliases
dots_splice
Keywords
internal
Usage
dots_splice( ..., .ignore_empty = c("trailing", "none", "all"), .preserve_empty = FALSE, .homonyms = c("keep", "first", "last", "error"), .check_assign = FALSE )
Arguments
...
Arguments to collect in a list. These dots are [=dyn-dots]dynamic.
.ignore_empty
Whether to ignore empty arguments. Can be one of "trailing", "none", "all". If "trailing", only the last argument is ignored if it is empty.
.preserve_empty
Whether to preserve the empty arguments that were not ignored. If TRUE, empty arguments are stored with [=missing_arg]missing_arg() values. If FALSE (the default) an error is thrown when an empty argument is detected.
.homonyms
How to treat arguments with the same name. The default, "keep", preserves these arguments. Set .homonyms to "first" to only keep the first occurrences, to "last" to keep the last occurrences, and to "error" to raise an informative error and indicate what arguments have duplicated names.
.check_assign
Whether to check for <- calls. When TRUE a warning recommends users to use = if they meant to match a function parameter or wrap the <- call in curly braces otherwise. This ensures assignments are explicit.
dots_values
Evaluate dots with preliminary splicing
CRAN · 1.2.0 · rlang/man/dots_values.Rd · 2026-05-07

This is a tool for advanced users. It captures dots, processes unquoting and splicing operators, and evaluates them. Unlike [=dots_list]dots_list(), it does not flatten spliced objects, instead they are attributed a spliced class (see [=splice]splice()). You can process spliced objects manually, perhaps with a custom predicate (see [=flatten_if]flatten_if()).

Aliases
dots_values
Keywords
internal
Usage
dots_values( ..., .ignore_empty = c("trailing", "none", "all"), .preserve_empty = FALSE, .homonyms = c("keep", "first", "last", "error"), .check_assign = FALSE )
Arguments
...
Arguments to evaluate and process splicing operators.
.ignore_empty
Whether to ignore empty arguments. Can be one of "trailing", "none", "all". If "trailing", only the last argument is ignored if it is empty.
.preserve_empty
Whether to preserve the empty arguments that were not ignored. If TRUE, empty arguments are stored with [=missing_arg]missing_arg() values. If FALSE (the default) an error is thrown when an empty argument is detected.
.homonyms
How to treat arguments with the same name. The default, "keep", preserves these arguments. Set .homonyms to "first" to only keep the first occurrences, to "last" to keep the last occurrences, and to "error" to raise an informative error and indicate what arguments have duplicated names.
.check_assign
Whether to check for <- calls. When TRUE a warning recommends users to use = if they meant to match a function parameter or wrap the <- call in curly braces otherwise. This ensures assignments are explicit.
Examples
dots <- dots_values(!!! list(1, 2), 3) dots # Flatten the objects marked as spliced: flatten_if(dots, is_spliced)
duplicate
Duplicate an R object
CRAN · 1.2.0 · rlang/man/duplicate.Rd · 2026-05-07

duplicate() is an interface to the C-level duplicate() and shallow_duplicate() functions. It is mostly meant for users of the C API of R, e.g. for debugging, experimenting, or prototyping C code in R.

Aliases
duplicate
Keywords
internal
Usage
duplicate(x, shallow = FALSE)
Arguments
x
An R object. Uncopyable objects like symbols and environments are returned as is (just like with <-).
shallow
Recursive data structures like lists, calls and pairlists are duplicated in full by default. A shallow copy only duplicates the top-level data structure.
See also
pairlist
dyn-dots
Dynamic dots features
CRAN · 1.2.0 · rlang/man/dyn-dots.Rd · 2026-05-07

The base ... syntax supports: Forwarding arguments from function to function, matching them along the way to arguments. Collecting arguments inside data structures, e.g. with [=c]c() or [=list]list(). Dynamic dots offer a few additional features, [=topic-inject]injection in particular: You can splice arguments saved in a list with the splice operator [=splice-operator]!!!. You can inject names with [=glue-operators]glue syntax on the left-hand side of :=. Trailing commas are ignored, making it easier to copy and paste lines of arguments.

Aliases
dyn-dotstidy-dotsdoc_dots_dynamic:=
Examples
f <- function(...) out <- list2(...) rev(out) # Trailing commas are ignored f(this = "that", ) # Splice lists of arguments with `!!!` x <- list(alpha = "first", omega = "last") f(!!!x) # Inject a name using glue syntax if (is_installed("glue")) nm <- "key" f("nm" := "value") f("prefix_nm" := "value")
Custom sections
Add dynamic dots support in your functions
If your function takes dots, adding support for dynamic features is as easy as collecting the dots with [=list2]list2() instead of [=list]list(). See also [=dots_list]dots_list(), which offers more control over the collection. In general, passing ... to a function that supports dynamic dots causes your function to inherit the dynamic behaviour. In packages, document dynamic dots with this standard tag: html<div class="sourceCode"> @param ... <[`dynamic-dots`][rlang::dyn-dots]> What these dots do. html</div>
embrace-operator
Embrace operator \\
CRAN · 1.2.0 · rlang/man/embrace-operator.Rd · 2026-05-07

The embrace operator \\ is used to create functions that call other [=topic-data-mask]data-masking functions. It transports a data-masked argument (an argument that can refer to columns of a data frame) from one function to another. html<div class="sourceCode r">my_mean <- function(data, var) \ dplyr::summarise(data, mean = mean(\\ var \\)) \ html</div>

Aliases
embrace-operatorcurly-curly
See also
html[=topic-data-mask]What is data-masking and why do I need \\?[=topic-data-mask]What is data-masking and why do I need curly-curly? html[=topic-data-mask-programming]Data mask programming patterns[=topic-data-mask-programming]Data mask programming patterns
Custom sections
Under the hood
\\ combines [=enquo]enquo() and [=injection-operator]!! in one step. The snippet above is equivalent to: html<div class="sourceCode r">my_mean <- function(data, var) \ var <- enquo(var) dplyr::summarise(data, mean = mean(!!var)) \ html</div>
empty_env
Get the empty environment
CRAN · 1.2.0 · rlang/man/empty_env.Rd · 2026-05-07

The empty environment is the only one that does not have a parent. It is always used as the tail of an environment chain such as the search path (see [=search_envs]search_envs()).

Aliases
empty_env
Usage
empty_env()
Examples
# Create environments with nothing in scope: child_env(empty_env())
englue
Defuse function arguments with glue
CRAN · 1.2.0 · rlang/man/englue.Rd · 2026-05-07

englue() creates a string with the [=glue-operators]glue operators \ and \\. These operators are normally used to inject names within [=dyn-dots]dynamic dots. englue() makes them available anywhere within a function. englue() must be used inside a function. englue(" var ") [=topic-defuse]defuses the argument var and transforms it to a string using the default name operation.

Aliases
englue
Usage
englue(x, env = caller_env(), error_call = current_env(), error_arg = "x")
Arguments
x
A string to interpolate with glue operators.
env
User environment where the interpolation data lives in case you're wrapping englue() in another function.
error_call
The execution environment of a currently running function, e.g. caller_env(). The function will be mentioned in error messages as the source of the error. See the call argument of [=abort]abort() for more information.
error_arg
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
Details
englue(" var ") is equivalent to as_label(enquo(var)). It [=topic-defuse]defuses arg and transforms the expression to a string with [=as_label]as_label(). In dynamic dots, using only \ is allowed. In englue() you must use \\ at least once. Use glue::glue() for simple interpolation. Before using englue() in a package, first ensure that glue is installed by adding it to your Imports: section. html<div class="sourceCode r">usethis::use_package("glue", "Imports") html</div>
Examples
g <- function(var) englue(" var ") g(cyl) g(1 + 1) g(!!letters) # These are equivalent to as_label(quote(cyl)) as_label(quote(1 + 1)) as_label(letters)
See also
html[=topic-inject]Injecting with !!, !!!, and glue syntax[=topic-inject]Injecting with !!, !!!, and glue syntax
Custom sections
Wrapping englue()
You can provide englue semantics to a user provided string by supplying env. In this example we create a variant of englue() that supports a special .qux pronoun by: Creating an environment masked_env that inherits from the user env, the one where their data lives. Overriding the error_arg and error_call arguments to point to our own argument name and call environment. This pattern is slightly different from usual error context passing because englue() is a backend function that uses its own error context by default (and not a checking function that uses your error context by default). html<div class="sourceCode r">my_englue <- function(text) \ masked_env <- env(caller_env(), .qux = "QUX") englue( text, env = masked_env, error_arg = "text", error_call = current_env() ) \ # Users can then use your wrapper as they would use `englue()`: fn <- function(x) \ foo <- "FOO" my_englue("\\ x \\_\.qux\_\foo\") \ fn(bar) #> [1] "bar_QUX_FOO" html</div> If you are creating a low level package on top of englue(), you should also consider exposing env, error_arg and error_call in your englue() wrapper so users can wrap your wrapper.
enquo
Defuse function arguments
CRAN · 1.2.0 · rlang/man/enquo.Rd · 2026-05-07

enquo() and enquos() [=topic-defuse]defuse function arguments. A defused expression can be examined, modified, and injected into other expressions. Defusing function arguments is useful for: Creating data-masking functions. Interfacing with another [=topic-data-mask]data-masking function using the [=topic-metaprogramming]defuse-and-inject pattern. These are advanced tools. Make sure to first learn about the embrace operator html[=embrace-operator]\\\\ in html[=topic-data-mask-programming]Data mask programming patterns[=topic-data-mask-programming]Data mask programming patterns. \\ is easier to work with less theory, and it is sufficient in most applications.

Aliases
enquoenquos
Usage
enquo(arg) enquos( ..., .named = FALSE, .ignore_empty = c("trailing", "none", "all"), .ignore_null = c("none", "all"), .unquote_names = TRUE, .homonyms = c("keep", "first", "last", "error"), .check_assign = FALSE )
Arguments
arg
An unquoted argument name. The expression supplied to that argument is defused and returned.
...
Names of arguments to defuse.
.named
If TRUE, unnamed inputs are automatically named with [=as_label]as_label(). This is equivalent to applying [=exprs_auto_name]exprs_auto_name() on the result. If FALSE, unnamed elements are left as is and, if fully unnamed, the list is given minimal names (a vector of ""). If NULL, fully unnamed results are left with NULL names.
.ignore_empty
Whether to ignore empty arguments. Can be one of "trailing", "none", "all". If "trailing", only the last argument is ignored if it is empty. Named arguments are not considered empty.
.ignore_null
Whether to ignore unnamed null arguments. Can be "none" or "all".
.unquote_names
Whether to treat := as =. Unlike =, the := syntax supports [=glue-operators]names injection.
.homonyms
How to treat arguments with the same name. The default, "keep", preserves these arguments. Set .homonyms to "first" to only keep the first occurrences, to "last" to keep the last occurrences, and to "error" to raise an informative error and indicate what arguments have duplicated names.
.check_assign
Whether to check for <- calls. When TRUE a warning recommends users to use = if they meant to match a function parameter or wrap the <- call in curly braces otherwise. This ensures assignments are explicit.
Value
enquo() returns a [=topic-quosure]quosure and enquos() returns a list of quosures.
Examples
# `enquo()` defuses the expression supplied by your user f <- function(arg) enquo(arg) f(1 + 1) # `enquos()` works with arguments and dots. It returns a list of # expressions f <- function(...) enquos(...) f(1 + 1, 2 * 10) # `enquo()` and `enquos()` enable _injection_ and _embracing_ for # your users g <- function(arg) f( arg * 2) g(100) column <- sym("cyl") g(!!column)
See also
html[=topic-defuse]Defusing R expressions[=topic-defuse]Defusing R expressions for an overview. [=expr]expr() to defuse your own local expressions. [=defusing-advanced]Advanced defusal operators. [base:eval]base::eval() and [=eval_bare]eval_bare() for resuming evaluation of a defused expression.
Custom sections
Implicit injection
Arguments defused with enquo() and enquos() automatically gain [=topic-inject]injection support. html<div class="sourceCode r">my_mean <- function(data, var) \ var <- enquo(var) dplyr::summarise(data, mean(!!var)) \ # Can now use `!!` and `\\` my_mean(mtcars, !!sym("cyl")) html</div> See [=enquo0]enquo0() and [=enquos0]enquos0() for variants that don't enable injection.
entrace
Add backtrace from error handler
CRAN · 1.2.0 · rlang/man/entrace.Rd · 2026-05-07

entrace() is a low level function. See [=global_entrace]global_entrace() for a user-friendly way of enriching errors and other conditions from your RProfile. entrace() is meant to be used as a global handler. It enriches conditions with a backtrace. Errors are saved to [=last_error]last_error() and rethrown immediately. Messages and warnings are recorded into [=last_messages]last_messages() and [=last_warnings]last_warnings() and let through. cnd_entrace() adds a backtrace to a condition object, without any other effect. It should be called from a condition handler. entrace() also works as an option(error = ) handler for compatibility with versions of R older than 4.0. When used as calling handler, rlang trims the handler invocation context from the backtrace.

Aliases
entracecnd_entrace
Keywords
internal
Usage
entrace(cnd, ..., top = NULL, bottom = NULL) cnd_entrace(cnd, ..., top = NULL, bottom = NULL)
Arguments
cnd
When entrace() is used as a calling handler, cnd is the condition to handle.
...
Unused. These dots are for future extensions.
top
The first frame environment to be included in the backtrace. This becomes the top of the backtrace tree and represents the oldest call in the backtrace. This is needed in particular when you call trace_back() indirectly or from a larger context, for example in tests or inside an RMarkdown document where you don't want all of the knitr evaluation mechanisms to appear in the backtrace. If not supplied, the rlang_trace_top_env global option is consulted. This makes it possible to trim the embedding context for all backtraces created while the option is set. If knitr is in progress, the default value for this option is knitr::knit_global() so that the knitr context is trimmed out of backtraces.
bottom
The last frame environment to be included in the backtrace. This becomes the rightmost leaf of the backtrace tree and represents the youngest call in the backtrace. Set this when you would like to capture a backtrace without the capture context. Can also be an integer that will be passed to [=caller_env]caller_env().
Examples
quote( # Not run # Set `entrace()` globally in your RProfile globalCallingHandlers(error = rlang::entrace) # On older R versions which don't feature `globalCallingHandlers`, # set the error handler like this: options(error = rlang::entrace) )
See also
[=global_entrace]global_entrace() for configuring errors with entrace(). [=cnd_entrace]cnd_entrace() to manually add a backtrace to a condition.
env
Create a new environment
CRAN · 1.2.0 · rlang/man/env.Rd · 2026-05-07

These functions create new environments. env() creates a child of the current environment by default and takes a variable number of named objects to populate it. new_environment() creates a child of the empty environment by default and takes a named list of objects to populate it.

Aliases
envnew_environment
Usage
env(...) new_environment(data = list(), parent = empty_env())
Arguments
..., data
<[=dyn-dots]dynamic> Named values. You can supply one unnamed to specify a custom parent, otherwise it defaults to the current environment.
parent
A parent environment.
Examples
# env() creates a new environment that inherits from the current # environment by default env <- env(a = 1, b = "foo") env$b identical(env_parent(env), current_env()) # Supply one unnamed argument to inherit from another environment: env <- env(base_env(), a = 1, b = "foo") identical(env_parent(env), base_env()) # Both env() and child_env() support tidy dots features: objs <- list(b = "foo", c = "bar") env <- env(a = 1, !!! objs) env$c # You can also unquote names with the definition operator `:=` var <- "a" env <- env(!!var := "A") env$a # Use new_environment() to create containers with the empty # environment as parent: env <- new_environment() env_parent(env) # Like other new_ constructors, it takes an object rather than dots: new_environment(list(a = "foo", b = "bar"))
See also
[=env_has]env_has(), [=env_bind]env_bind().
Custom sections
Environments as objects
Environments are containers of uniquely named objects. Their most common use is to provide a scope for the evaluation of R expressions. Not all languages have first class environments, i.e. can manipulate scope as regular objects. Reification of scope is one of the most powerful features of R as it allows you to change what objects a function or expression sees when it is evaluated. Environments also constitute a data structure in their own right. They are a collection of uniquely named objects, subsettable by name and modifiable by reference. This latter property (see section on reference semantics) is especially useful for creating mutable OO systems (cf the https://github.com/r-lib/R6R6 package and the https://ggplot2.tidyverse.org/articles/extending-ggplot2.htmlggproto system for extending ggplot2).
Inheritance
All R environments (except the [=empty_env]empty environment) are defined with a parent environment. An environment and its grandparents thus form a linear hierarchy that is the basis for https://en.wikipedia.org/wiki/Scope_(computer_science)lexical scoping in R. When R evaluates an expression, it looks up symbols in a given environment. If it cannot find these symbols there, it keeps looking them up in parent environments. This way, objects defined in child environments have precedence over objects defined in parent environments. The ability of overriding specific definitions is used in the tidyeval framework to create powerful domain-specific grammars. A common use of masking is to put data frame columns in scope. See for example [=as_data_mask]as_data_mask().
Reference semantics
Unlike regular objects such as vectors, environments are an [=is_copyable]uncopyable object type. This means that if you have multiple references to a given environment (by assigning the environment to another symbol with <- or passing the environment as argument to a function), modifying the bindings of one of those references changes all other references as well.
env_bind
Bind symbols to objects in an environment
CRAN · 1.2.0 · rlang/man/env_bind.Rd · 2026-05-07

These functions create bindings in an environment. The bindings are supplied through ... as pairs of names and values or expressions. env_bind() is equivalent to evaluating a <- expression within the given environment. This function should take care of the majority of use cases but the other variants can be useful for specific problems. env_bind() takes named values which are bound in .env. env_bind() is equivalent to [base:assign]base::assign(). env_bind_active() takes named functions and creates active bindings in .env. This is equivalent to [base:bindenv]base::makeActiveBinding(). An active binding executes a function each time it is evaluated. The arguments are passed to [=as_function]as_function() so you can supply formulas instead of functions. Remember that functions are scoped in their own environment. These functions can thus refer to symbols from this enclosure that are not actually in scope in the dynamic environment where the active bindings are invoked. This allows creative solutions to difficult problems (see the implementations of dplyr::do() methods for an example). env_bind_lazy() takes named expressions. This is equivalent to [base:delayedAssign]base::delayedAssign(). The arguments are captured with [=exprs]exprs() (and thus support call-splicing and unquoting) and assigned to symbols in .env. These expressions are not evaluated immediately but lazily. Once a symbol is evaluated, the corresponding expression is evaluated in turn and its value is bound to the symbol (the expressions are thus evaluated only once, if at all). %<~% is a shortcut for env_bind_lazy(). It works like <- but the RHS is evaluated lazily.

Aliases
env_bindenv_bind_lazyenv_bind_active%<~%
Usage
env_bind(.env, ...) env_bind_lazy(.env, ..., .eval_env = caller_env()) env_bind_active(.env, ...) lhs %<~% rhs
Arguments
.env
An environment.
...
<[=dyn-dots]dynamic> Named objects (env_bind()), expressions env_bind_lazy(), or functions (env_bind_active()). Use [=zap]zap() to remove bindings.
.eval_env
The environment where the expressions will be evaluated when the symbols are forced.
lhs
The variable name to which rhs will be lazily assigned.
rhs
An expression lazily evaluated and assigned to lhs.
Value
The input object .env, with its associated environment modified in place, invisibly.
Examples
# env_bind() is a programmatic way of assigning values to symbols # with `<-`. We can add bindings in the current environment: env_bind(current_env(), foo = "bar") foo # Or modify those bindings: bar <- "bar" env_bind(current_env(), bar = "BAR") bar # You can remove bindings by supplying zap sentinels: env_bind(current_env(), foo = zap()) try(foo) # Unquote-splice a named list of zaps zaps <- rep_named(c("foo", "bar"), list(zap())) env_bind(current_env(), !!!zaps) try(bar) # It is most useful to change other environments: my_env <- env() env_bind(my_env, foo = "foo") my_env$foo # A useful feature is to splice lists of named values: vals <- list(a = 10, b = 20) env_bind(my_env, !!!vals, c = 30) my_env$b my_env$c # You can also unquote a variable referring to a symbol or a string # as binding name: var <- "baz" env_bind(my_env, !!var := "BAZ") my_env$baz # The old values of the bindings are returned invisibly: old <- env_bind(my_env, a = 1, b = 2, baz = "baz") old # You can restore the original environment state by supplying the # old values back: env_bind(my_env, !!!old) # env_bind_lazy() assigns expressions lazily: env <- env() env_bind_lazy(env, name = cat("forced!"); "value" ) # Referring to the binding will cause evaluation: env$name # But only once, subsequent references yield the final value: env$name # You can unquote expressions: expr <- quote(message("forced!")) env_bind_lazy(env, name = !!expr) env$name # By default the expressions are evaluated in the current # environment. For instance we can create a local binding and refer # to it, even though the variable is bound in a different # environment: who <- "mickey" env_bind_lazy(env, name = paste(who, "mouse")) env$name # You can specify another evaluation environment with `.eval_env`: eval_env <- env(who = "minnie") env_bind_lazy(env, name = paste(who, "mouse"), .eval_env = eval_env) env$name # Or by unquoting a quosure: quo <- local( who <- "fievel" quo(paste(who, "mouse")) ) env_bind_lazy(env, name = !!quo) env$name # You can create active bindings with env_bind_active(). Active # bindings execute a function each time they are evaluated: fn <- function() cat("I have been called") rnorm(1) env <- env() env_bind_active(env, symbol = fn) # `fn` is executed each time `symbol` is evaluated or retrieved: env$symbol env$symbol eval_bare(quote(symbol), env) eval_bare(quote(symbol), env) # All arguments are passed to as_function() so you can use the # formula shortcut: env_bind_active(env, foo = ~ runif(1)) env$foo env$foo
See also
[=env_poke]env_poke() for binding a single element.
Custom sections
Side effects
Since environments have reference semantics (see relevant section in [=env]env() documentation), modifying the bindings of an environment produces effects in all other references to that environment. In other words, env_bind() and its variants have side effects. Like other side-effecty functions like par() and options(), env_bind() and variants return the old values invisibly.
env_binding_are_active
What kind of environment binding?
CRAN · 1.2.0 · rlang/man/env_binding_are_active.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental]

Aliases
env_binding_are_activeenv_binding_are_lazy
Keywords
internal
Usage
env_binding_are_active(env, nms = NULL) env_binding_are_lazy(env, nms = NULL)
Arguments
env
An environment.
nms
Names of bindings. Defaults to all bindings in env.
Value
A logical vector as long as nms and named after it.
env_binding_lock
Lock or unlock environment bindings
CRAN · 1.2.0 · rlang/man/env_binding_lock.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] Locked environment bindings trigger an error when an attempt is made to redefine the binding.

Aliases
env_binding_lockenv_binding_unlockenv_binding_are_locked
Keywords
internal
Usage
env_binding_lock(env, nms = NULL) env_binding_unlock(env, nms = NULL) env_binding_are_locked(env, nms = NULL)
Arguments
env
An environment.
nms
Names of bindings. Defaults to all bindings in env.
Value
env_binding_are_unlocked() returns a logical vector as long as nms and named after it. env_binding_lock() and env_binding_unlock() return the old value of env_binding_are_unlocked() invisibly.
Examples
# Bindings are unlocked by default: env <- env(a = "A", b = "B") env_binding_are_locked(env) # But can optionally be locked: env_binding_lock(env, "a") env_binding_are_locked(env) # If run, the following would now return an error because `a` is locked: # env_bind(env, a = "foo") # with_env(env, a <- "bar") # Let's unlock it. Note that the return value indicate which # bindings were locked: were_locked <- env_binding_unlock(env) were_locked # Now that it is unlocked we can modify it again: env_bind(env, a = "foo") with_env(env, a <- "bar") env$a
See also
[=env_lock]env_lock() for locking an environment.
env_browse
Browse environments
CRAN · 1.2.0 · rlang/man/env_browse.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#defunctlifecycle-defunct.svgoptions: alt='[Defunct]'[Defunct] env_browse(env) is equivalent to evaluating browser() in env. It persistently sets the environment for step-debugging. Supply value = FALSE to disable browsing. env_is_browsed() is a predicate that inspects whether an environment is being browsed.

Aliases
env_browseenv_is_browsed
Usage
env_browse(env, value = TRUE) env_is_browsed(env)
Arguments
env
An environment.
value
Whether to browse env.
Value
env_browse() returns the previous value of env_is_browsed() (a logical), invisibly.
env_bury
Mask bindings by defining symbols deeper in a scope
CRAN · 1.2.0 · rlang/man/env_bury.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#supersededlifecycle-superseded.svgoptions: alt='[Superseded]'[Superseded] This function is superseded. Please use [=env]env() (and possibly [=set_env]set_env() if you're masking the bindings for another object like a closure or a formula) instead. env_bury() is like [=env_bind]env_bind() but it creates the bindings in a new child environment. This makes sure the new bindings have precedence over old ones, without altering existing environments. Unlike env_bind(), this function does not have side effects and returns a new environment (or object wrapping that environment).

Aliases
env_bury
Keywords
internal
Usage
env_bury(.env, ...)
Arguments
.env
An environment.
...
<[=dyn-dots]dynamic> Named objects (env_bind()), expressions env_bind_lazy(), or functions (env_bind_active()). Use [=zap]zap() to remove bindings.
Value
A copy of .env enclosing the new environment containing bindings to ... arguments.
Examples
orig_env <- env(a = 10) fn <- set_env(function() a, orig_env) # fn() currently sees `a` as the value `10`: fn() # env_bury() will bury the current scope of fn() behind a new # environment: fn <- env_bury(fn, a = 1000) fn() # Even though the symbol `a` is still defined deeper in the scope: orig_env$a
See also
[=env_bind]env_bind(), [=env_unbind]env_unbind()
env_cache
Cache a value in an environment
CRAN · 1.2.0 · rlang/man/env_cache.Rd · 2026-05-07

env_cache() is a wrapper around [=env_get]env_get() and [=env_poke]env_poke() designed to retrieve a cached value from env. If the nm binding exists, it returns its value. Otherwise, it stores the default value in env and returns that.

Aliases
env_cache
Usage
env_cache(env, nm, default)
Arguments
env
An environment.
nm
Name of binding, a string.
default
The default value to store in env if nm does not exist yet.
Value
Either the value of nm or default if it did not exist yet.
Examples
e <- env(a = "foo") # Returns existing binding env_cache(e, "a", "default") # Creates a `b` binding and returns its default value env_cache(e, "b", "default") # Now `b` is defined e$b
env_clone
Clone or coalesce an environment
CRAN · 1.2.0 · rlang/man/env_clone.Rd · 2026-05-07

env_clone() creates a new environment containing exactly the same bindings as the input, optionally with a new parent. env_coalesce() copies binding from the RHS environment into the LHS. If the RHS already contains bindings with the same name as in the LHS, those are kept as is. Both these functions preserve active bindings and promises.

Aliases
env_cloneenv_coalesce
Usage
env_clone(env, parent = env_parent(env)) env_coalesce(env, from)
Arguments
env
An environment.
parent
The parent of the cloned environment.
from
Environment to copy bindings from.
Examples
# A clone initially contains the same bindings as the original # environment env <- env(a = 1, b = 2) clone <- env_clone(env) env_print(clone) env_print(env) # But it can acquire new bindings or change existing ones without # impacting the original environment env_bind(clone, a = "foo", c = 3) env_print(clone) env_print(env) # `env_coalesce()` copies bindings from one environment to another lhs <- env(a = 1) rhs <- env(a = "a", b = "b", c = "c") env_coalesce(lhs, rhs) env_print(lhs) # To copy all the bindings from `rhs` into `lhs`, first delete the # conflicting bindings from `rhs` env_unbind(lhs, env_names(rhs)) env_coalesce(lhs, rhs) env_print(lhs)
env_depth
Depth of an environment chain
CRAN · 1.2.0 · rlang/man/env_depth.Rd · 2026-05-07

This function returns the number of environments between env and the [=empty_env]empty environment, including env. The depth of env is also the number of parents of env (since the empty environment counts as a parent).

Aliases
env_depth
Usage
env_depth(env)
Arguments
env
An environment.
Value
An integer.
Examples
env_depth(empty_env()) env_depth(pkg_env("rlang"))
See also
The section on inheritance in [=env]env() documentation.
env_get
Get an object in an environment
CRAN · 1.2.0 · rlang/man/env_get.Rd · 2026-05-07

env_get() extracts an object from an enviroment env. By default, it does not look in the parent environments. env_get_list() extracts multiple objects from an environment into a named list.

Aliases
env_getenv_get_list
Usage
env_get(env = caller_env(), nm, default, inherit = FALSE, last = empty_env()) env_get_list( env = caller_env(), nms, default, inherit = FALSE, last = empty_env() )
Arguments
env
An environment.
nm
Name of binding, a string.
default
A default value in case there is no binding for nm in env.
inherit
Whether to look for bindings in the parent environments.
last
Last environment inspected when inherit is TRUE. Can be useful in conjunction with [base:ns-topenv]base::topenv().
nms
Names of bindings, a character vector.
Value
An object if it exists. Otherwise, throws an error.
Examples
parent <- child_env(NULL, foo = "foo") env <- child_env(parent, bar = "bar") # This throws an error because `foo` is not directly defined in env: # env_get(env, "foo") # However `foo` can be fetched in the parent environment: env_get(env, "foo", inherit = TRUE) # You can also avoid an error by supplying a default value: env_get(env, "foo", default = "FOO")
See also
[=env_cache]env_cache() for a variant of env_get() designed to cache a value in an environment.
env_has
Does an environment have or see bindings?
CRAN · 1.2.0 · rlang/man/env_has.Rd · 2026-05-07

env_has() is a vectorised predicate that queries whether an environment owns bindings personally (with inherit set to FALSE, the default), or sees them in its own environment or in any of its parents (with inherit = TRUE).

Aliases
env_has
Usage
env_has(env = caller_env(), nms, inherit = FALSE)
Arguments
env
An environment.
nms
A character vector of binding names for which to check existence.
inherit
Whether to look for bindings in the parent environments.
Value
A named logical vector as long as nms.
Examples
parent <- child_env(NULL, foo = "foo") env <- child_env(parent, bar = "bar") # env does not own `foo` but sees it in its parent environment: env_has(env, "foo") env_has(env, "foo", inherit = TRUE)
env_inherits
Does environment inherit from another environment?
CRAN · 1.2.0 · rlang/man/env_inherits.Rd · 2026-05-07

This returns TRUE if x has ancestor among its parents.

Aliases
env_inherits
Usage
env_inherits(env, ancestor)
Arguments
env
An environment.
ancestor
Another environment from which x might inherit.
env_is_user_facing
Is frame environment user facing?
CRAN · 1.2.0 · rlang/man/env_is_user_facing.Rd · 2026-05-07

Detects if env is user-facing, that is, whether it's an environment that inherits from: The global environment, as would happen when called interactively A package that is currently being tested If either is true, we consider env to belong to an evaluation frame that was called directly by the end user. This is by contrast to indirect calls by third party functions which are not user facing. For instance the https://lifecycle.r-lib.org/lifecycle package uses env_is_user_facing() to figure out whether a deprecated function was called directly or indirectly, and select an appropriate verbosity level as a function of that.

Aliases
env_is_user_facing
Usage
env_is_user_facing(env)
Arguments
env
An environment.
Examples
fn <- function() env_is_user_facing(caller_env()) # Direct call of `fn()` from the global env with(global_env(), fn()) # Indirect call of `fn()` from a package with(ns_env("utils"), fn())
Custom sections
Escape hatch
You can override the return value of env_is_user_facing() by setting the global option "rlang_user_facing" to: TRUE or FALSE. A package name as a string. Then env_is_user_facing(x) returns TRUE if x inherits from the namespace corresponding to that package name.
env_lock
Lock an environment
CRAN · 1.2.0 · rlang/man/env_lock.Rd · 2026-05-07

htmlhttps://lifecycle.r-lib.org/articles/stages.html#experimentallifecycle-experimental.svgoptions: alt='[Experimental]'[Experimental] Locked environments cannot be modified. An important example is namespace environments which are locked by R when loaded in a session. Once an environment is locked it normally cannot be unlocked. Note that only the environment as a container is locked, not the individual bindings. You can't remove or add a binding but you can still modify the values of existing bindings. See [=env_binding_lock]env_binding_lock() for locking individual bindings.

Aliases
env_lockenv_is_locked
Keywords
internal
Usage
env_lock(env) env_is_locked(env)
Arguments
env
An environment.
Value
The old value of env_is_locked() invisibly.
Examples
# New environments are unlocked by default: env <- env(a = 1) env_is_locked(env) # Use env_lock() to lock them: env_lock(env) env_is_locked(env) # Now that `env` is locked, it is no longer possible to remove or # add bindings. If run, the following would fail: # env_unbind(env, "a") # env_bind(env, b = 2) # Note that even though the environment as a container is locked, # the individual bindings are still unlocked and can be modified: env$a <- 10
See also
[=env_binding_lock]env_binding_lock()
env_name
Label of an environment
CRAN · 1.2.0 · rlang/man/env_name.Rd · 2026-05-07

Special environments like the global environment have their own names. env_name() returns: "global" for the global environment. "empty" for the empty environment. "base" for the base package environment (the last environment on the search path). "namespace:pkg" if env is the namespace of the package "pkg". The name attribute of env if it exists. This is how the [=search_envs]package environments and the [=ns_imports_env]imports environments store their names. The name of package environments is typically "package:pkg". The empty string "" otherwise. env_label() is exactly like env_name() but returns the memory address of anonymous environments as fallback.

Aliases
env_nameenv_label
Usage
env_name(env) env_label(env)
Arguments
env
An environment.
Examples
# Some environments have specific names: env_name(global_env()) env_name(ns_env("rlang")) # Anonymous environments don't have names but are labelled by their # address in memory: env_name(env()) env_label(env())
env_names
Names and numbers of symbols bound in an environment
CRAN · 1.2.0 · rlang/man/env_names.Rd · 2026-05-07

env_names() returns object names from an enviroment env as a character vector. All names are returned, even those starting with a dot. env_length() returns the number of bindings.

Aliases
env_namesenv_length
Usage
env_names(env) env_length(env)
Arguments
env
An environment.
Value
A character vector of object names.
Examples
env <- env(a = 1, b = 2) env_names(env)
Custom sections
Names of symbols and objects
Technically, objects are bound to symbols rather than strings, since the R interpreter evaluates symbols (see [=is_expression]is_expression() for a discussion of symbolic objects versus literal objects). However it is often more convenient to work with strings. In rlang terminology, the string corresponding to a symbol is called the name of the symbol (or by extension the name of an object bound to a symbol).
Encoding
There are deep encoding issues when you convert a string to symbol and vice versa. Symbols are always in the native encoding. If that encoding (let's say latin1) cannot support some characters, these characters are serialised to ASCII. That's why you sometimes see strings looking like <U+1234>, especially if you're running Windows (as R doesn't support UTF-8 as native encoding on that platform). To alleviate some of the encoding pain, env_names() always returns a UTF-8 character vector (which is fine even on Windows) with ASCII unicode points translated back to UTF-8.
env_parent
Get parent environments
CRAN · 1.2.0 · rlang/man/env_parent.Rd · 2026-05-07

env_parent() returns the parent environment of env if called with n = 1, the grandparent with n = 2, etc. env_tail() searches through the parents and returns the one which has [=empty_env]empty_env() as parent. env_parents() returns the list of all parents, including the empty environment. This list is named using [=env_name]env_name(). See the section on inheritance in [=env]env()'s documentation.

Aliases
env_parentenv_tailenv_parents
Usage
env_parent(env = caller_env(), n = 1) env_tail(env = caller_env(), last = global_env()) env_parents(env = caller_env(), last = global_env())
Arguments
env
An environment.
n
The number of generations to go up.
last
The environment at which to stop. Defaults to the global environment. The empty environment is always a stopping condition so it is safe to leave the default even when taking the tail or the parents of an environment on the search path. env_tail() returns the environment which has last as parent and env_parents() returns the list of environments up to last.
Value
An environment for env_parent() and env_tail(), a list of environments for env_parents().
Examples
# Get the parent environment with env_parent(): env_parent(global_env()) # Or the tail environment with env_tail(): env_tail(global_env()) # By default, env_parent() returns the parent environment of the # current evaluation frame. If called at top-level (the global # frame), the following two expressions are equivalent: env_parent() env_parent(base_env()) # This default is more handy when called within a function. In this # case, the enclosure environment of the function is returned # (since it is the parent of the evaluation frame): enclos_env <- env() fn <- set_env(function() env_parent(), enclos_env) identical(enclos_env, fn())
env_poke
Poke an object in an environment
CRAN · 1.2.0 · rlang/man/env_poke.Rd · 2026-05-07

env_poke() will assign or reassign a binding in env if create is TRUE. If create is FALSE and a binding does not already exists, an error is issued.

Aliases
env_poke
Usage
env_poke(env = caller_env(), nm, value, inherit = FALSE, create = !inherit)
Arguments
env
An environment.
nm
Name of binding, a string.
value
The value for a new binding.
inherit
Whether to look for bindings in the parent environments.
create
Whether to create a binding if it does not already exist in the environment.
Details
If inherit is TRUE, the parents environments are checked for an existing binding to reassign. If not found and create is TRUE, a new binding is created in env. The default value for create is a function of inherit: FALSE when inheriting, TRUE otherwise. This default makes sense because the inheriting case is mostly for overriding an existing binding. If not found, something probably went wrong and it is safer to issue an error. Note that this is different to the base R operator <<- which will create a binding in the global environment instead of the current environment when no existing binding is found in the parents.
Value
The old value of nm or a [=zap]zap sentinel if the binding did not exist yet.
See also
[=env_bind]env_bind() for binding multiple elements. [=env_cache]env_cache() for a variant of env_poke() designed to cache values.
env_print
Pretty-print an environment
CRAN · 1.2.0 · rlang/man/env_print.Rd · 2026-05-07

This prints: The [=env_label]label and the parent label. Whether the environment is [=env_lock]locked. The bindings in the environment (up to 20 bindings). They are printed succinctly using pillar::type_sum() (if available, otherwise uses an internal version of that generic). In addition [=env_bind_lazy]fancy bindings (actives and promises) are indicated as such. Locked bindings get a [L] tag Note that printing a package namespace (see [=ns_env]ns_env()) with env_print() will typically tag function bindings as <lazy> until they are evaluated the first time. This is because package functions are lazily-loaded from disk to improve performance when loading a package.

Aliases
env_print
Usage
env_print(env = caller_env())
Arguments
env
An environment, or object that can be converted to an environment by [=get_env]get_env().

버전 이력

RepositoryVersionPublishedFirst seenLast seenDocs
CRAN1.1.72026-01-092026-05-092026-05-09
CRAN1.1.62025-04-112026-05-092026-05-09
CRAN1.1.52025-01-172026-05-092026-05-09
CRAN1.1.42024-06-042026-05-092026-05-09
CRAN1.1.32024-01-102026-05-092026-05-09
CRAN1.1.22023-11-042026-05-092026-05-09
CRAN1.1.12023-04-292026-05-092026-05-09
CRAN1.1.02023-03-142026-05-092026-05-09
CRAN1.0.62022-09-242026-05-092026-05-09
CRAN1.0.52022-08-312026-05-092026-05-09
CRAN1.0.42022-07-122026-05-092026-05-09
CRAN1.0.32022-06-272026-05-092026-05-09
CRAN1.0.22022-03-042026-05-092026-05-09
CRAN1.0.12022-02-032026-05-092026-05-09
CRAN1.0.02022-01-262026-05-092026-05-09
CRAN0.4.122021-10-192026-05-092026-05-09
CRAN0.4.112021-05-012026-05-092026-05-09
CRAN0.4.102020-12-302026-05-092026-05-09
CRAN0.4.92020-11-262026-05-092026-05-09
CRAN0.4.82020-10-082026-05-092026-05-09
CRAN0.4.72020-07-102026-05-092026-05-09
CRAN0.4.62020-05-022026-05-092026-05-09
CRAN0.4.52020-03-012026-05-092026-05-09
CRAN0.4.42020-01-282026-05-092026-05-09
CRAN0.4.32020-01-242026-05-092026-05-09
CRAN0.4.22019-11-232026-05-092026-05-09
CRAN0.4.12019-10-242026-05-092026-05-09
CRAN0.4.02019-06-252026-05-092026-05-09
CRAN0.3.42019-04-072026-05-092026-05-09
CRAN0.3.32019-03-292026-05-092026-05-09
CRAN0.3.22019-03-212026-05-092026-05-09
CRAN0.3.12019-01-082026-05-092026-05-09
CRAN0.3.0.12018-10-252026-05-092026-05-09
CRAN0.3.02018-10-222026-05-092026-05-09
CRAN0.2.22018-08-162026-05-092026-05-09
CRAN0.2.12018-05-302026-05-092026-05-09
CRAN0.2.02018-02-202026-05-092026-05-09
CRAN0.1.62017-12-212026-05-092026-05-09
CRAN0.1.42017-11-052026-05-092026-05-09
CRAN0.1.22017-08-092026-05-092026-05-09
CRAN0.1.12017-05-182026-05-092026-05-09
CRAN0.12017-05-062026-05-092026-05-09
CRAN1.2.02026-05-292026-05-30

보안

표시할 OSV 데이터가 없습니다.

문헌 신호

표시할 OpenAlex 데이터가 없습니다.