{"id":"https://openalex.org/W2580029075","doi":"https://doi.org/10.32614/rj-2017-028","title":"checkmate: Fast Argument Checks for Defensive R Programming","display_name":"checkmate: Fast Argument Checks for Defensive R Programming","publication_year":2017,"publication_date":"2017-01-01","ids":{"openalex":"https://openalex.org/W2580029075","doi":"https://doi.org/10.32614/rj-2017-028","mag":"2580029075"},"language":"en","primary_location":{"id":"doi:10.32614/rj-2017-028","is_oa":true,"landing_page_url":"https://doi.org/10.32614/rj-2017-028","pdf_url":"https://journal.r-project.org/archive/2017/RJ-2017-028/RJ-2017-028.pdf","source":{"id":"https://openalex.org/S2489169438","display_name":"The R Journal","issn_l":"2073-4859","issn":["2073-4859"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The R Journal","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"hybrid","oa_url":"https://journal.r-project.org/archive/2017/RJ-2017-028/RJ-2017-028.pdf","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Michel Lang","orcid":null},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Michel Lang","raw_affiliation_strings":[],"raw_orcid":null,"affiliations":[]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":0,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":3.9962,"has_fulltext":true,"cited_by_count":22,"citation_normalized_percentile":{"value":0.9436836,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":98},"biblio":{"volume":"9","issue":"1","first_page":"437","last_page":"437"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T11986","display_name":"Scientific Computing and Data Management","score":0.7684999704360962,"subfield":{"id":"https://openalex.org/subfields/1802","display_name":"Information Systems and Management"},"field":{"id":"https://openalex.org/fields/18","display_name":"Decision Sciences"},"domain":{"id":"https://openalex.org/domains/2","display_name":"Social Sciences"}},"topics":[{"id":"https://openalex.org/T11986","display_name":"Scientific Computing and Data Management","score":0.7684999704360962,"subfield":{"id":"https://openalex.org/subfields/1802","display_name":"Information Systems and Management"},"field":{"id":"https://openalex.org/fields/18","display_name":"Decision Sciences"},"domain":{"id":"https://openalex.org/domains/2","display_name":"Social Sciences"}},{"id":"https://openalex.org/T13398","display_name":"Data Analysis with R","score":0.09000000357627869,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T13523","display_name":"Mathematics, Computing, and Information Processing","score":0.020099999383091927,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/debugging","display_name":"Debugging","score":0.6758999824523926},{"id":"https://openalex.org/keywords/programmer","display_name":"Programmer","score":0.6644999980926514},{"id":"https://openalex.org/keywords/flexibility","display_name":"Flexibility (engineering)","score":0.5145000219345093},{"id":"https://openalex.org/keywords/interpreter","display_name":"Interpreter","score":0.49239999055862427},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.48919999599456787},{"id":"https://openalex.org/keywords/variable","display_name":"Variable (mathematics)","score":0.4830000102519989},{"id":"https://openalex.org/keywords/argument","display_name":"Argument (complex analysis)","score":0.43709999322891235},{"id":"https://openalex.org/keywords/base","display_name":"Base (topology)","score":0.4253000020980835},{"id":"https://openalex.org/keywords/modular-programming","display_name":"Modular programming","score":0.37860000133514404},{"id":"https://openalex.org/keywords/call-stack","display_name":"Call stack","score":0.35839998722076416}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8420000076293945},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.8208000063896179},{"id":"https://openalex.org/C168065819","wikidata":"https://www.wikidata.org/wiki/Q845566","display_name":"Debugging","level":2,"score":0.6758999824523926},{"id":"https://openalex.org/C2778514511","wikidata":"https://www.wikidata.org/wiki/Q1374194","display_name":"Programmer","level":2,"score":0.6644999980926514},{"id":"https://openalex.org/C2780598303","wikidata":"https://www.wikidata.org/wiki/Q65921492","display_name":"Flexibility (engineering)","level":2,"score":0.5145000219345093},{"id":"https://openalex.org/C122783720","wikidata":"https://www.wikidata.org/wiki/Q183065","display_name":"Interpreter","level":2,"score":0.49239999055862427},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.48919999599456787},{"id":"https://openalex.org/C182365436","wikidata":"https://www.wikidata.org/wiki/Q50701","display_name":"Variable (mathematics)","level":2,"score":0.4830000102519989},{"id":"https://openalex.org/C98184364","wikidata":"https://www.wikidata.org/wiki/Q1780131","display_name":"Argument (complex analysis)","level":2,"score":0.43709999322891235},{"id":"https://openalex.org/C42058472","wikidata":"https://www.wikidata.org/wiki/Q810214","display_name":"Base (topology)","level":2,"score":0.4253000020980835},{"id":"https://openalex.org/C88482812","wikidata":"https://www.wikidata.org/wiki/Q6453666","display_name":"Modular programming","level":2,"score":0.37860000133514404},{"id":"https://openalex.org/C119024030","wikidata":"https://www.wikidata.org/wiki/Q759899","display_name":"Call stack","level":3,"score":0.35839998722076416},{"id":"https://openalex.org/C43711488","wikidata":"https://www.wikidata.org/wiki/Q7534783","display_name":"Skew","level":2,"score":0.3495999872684479},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.3472999930381775},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.32359999418258667},{"id":"https://openalex.org/C108710211","wikidata":"https://www.wikidata.org/wiki/Q11538","display_name":"Mathematical proof","level":2,"score":0.3212999999523163},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.3172999918460846},{"id":"https://openalex.org/C138958017","wikidata":"https://www.wikidata.org/wiki/Q190087","display_name":"Data type","level":2,"score":0.31290000677108765},{"id":"https://openalex.org/C9395851","wikidata":"https://www.wikidata.org/wiki/Q177929","display_name":"Stack (abstract data type)","level":2,"score":0.31029999256134033},{"id":"https://openalex.org/C96147967","wikidata":"https://www.wikidata.org/wiki/Q190686","display_name":"Subroutine","level":2,"score":0.3059999942779541},{"id":"https://openalex.org/C97686452","wikidata":"https://www.wikidata.org/wiki/Q7604153","display_name":"Static analysis","level":2,"score":0.30410000681877136},{"id":"https://openalex.org/C175971053","wikidata":"https://www.wikidata.org/wiki/Q827335","display_name":"Abstract data type","level":2,"score":0.30090001225471497},{"id":"https://openalex.org/C56288433","wikidata":"https://www.wikidata.org/wiki/Q58673","display_name":"Data manipulation language","level":2,"score":0.29499998688697815},{"id":"https://openalex.org/C48859967","wikidata":"https://www.wikidata.org/wiki/Q6486712","display_name":"Language construct","level":2,"score":0.2946000099182129},{"id":"https://openalex.org/C148027188","wikidata":"https://www.wikidata.org/wiki/Q907375","display_name":"Unit testing","level":3,"score":0.287200003862381},{"id":"https://openalex.org/C115168132","wikidata":"https://www.wikidata.org/wiki/Q55813","display_name":"Machine code","level":3,"score":0.2815000116825104},{"id":"https://openalex.org/C39920170","wikidata":"https://www.wikidata.org/wiki/Q693083","display_name":"Soundness","level":2,"score":0.2800999879837036},{"id":"https://openalex.org/C2164484","wikidata":"https://www.wikidata.org/wiki/Q5170150","display_name":"Core (optical fiber)","level":2,"score":0.2782999873161316},{"id":"https://openalex.org/C2778012447","wikidata":"https://www.wikidata.org/wiki/Q1034415","display_name":"Scope (computer science)","level":2,"score":0.27309998869895935},{"id":"https://openalex.org/C198370458","wikidata":"https://www.wikidata.org/wiki/Q586459","display_name":"Type inference","level":3,"score":0.26579999923706055},{"id":"https://openalex.org/C2778485113","wikidata":"https://www.wikidata.org/wiki/Q193231","display_name":"Debugger","level":3,"score":0.26489999890327454},{"id":"https://openalex.org/C136388014","wikidata":"https://www.wikidata.org/wiki/Q17084976","display_name":"Algorithmic program debugging","level":3,"score":0.2646999955177307},{"id":"https://openalex.org/C101468663","wikidata":"https://www.wikidata.org/wiki/Q1620158","display_name":"Modular design","level":2,"score":0.25859999656677246},{"id":"https://openalex.org/C50831359","wikidata":"https://www.wikidata.org/wiki/Q165436","display_name":"Assembly language","level":3,"score":0.25619998574256897},{"id":"https://openalex.org/C2778029271","wikidata":"https://www.wikidata.org/wiki/Q5421931","display_name":"Extension (predicate logic)","level":2,"score":0.25619998574256897},{"id":"https://openalex.org/C2988963302","wikidata":"https://www.wikidata.org/wiki/Q629206","display_name":"Program code","level":2,"score":0.25600001215934753},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.2547000050544739},{"id":"https://openalex.org/C145428669","wikidata":"https://www.wikidata.org/wiki/Q471748","display_name":"Exception handling","level":2,"score":0.2542000114917755},{"id":"https://openalex.org/C32155586","wikidata":"https://www.wikidata.org/wiki/Q212569","display_name":"Simula","level":2,"score":0.2502000033855438}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.32614/rj-2017-028","is_oa":true,"landing_page_url":"https://doi.org/10.32614/rj-2017-028","pdf_url":"https://journal.r-project.org/archive/2017/RJ-2017-028/RJ-2017-028.pdf","source":{"id":"https://openalex.org/S2489169438","display_name":"The R Journal","issn_l":"2073-4859","issn":["2073-4859"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The R Journal","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:1701.04781","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1701.04781","pdf_url":"https://arxiv.org/pdf/1701.04781","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"}],"best_oa_location":{"id":"doi:10.32614/rj-2017-028","is_oa":true,"landing_page_url":"https://doi.org/10.32614/rj-2017-028","pdf_url":"https://journal.r-project.org/archive/2017/RJ-2017-028/RJ-2017-028.pdf","source":{"id":"https://openalex.org/S2489169438","display_name":"The R Journal","issn_l":"2073-4859","issn":["2073-4859"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The R Journal","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G5523801029","display_name":null,"funder_award_id":"SFB 876","funder_id":"https://openalex.org/F4320320879","funder_display_name":"Deutsche Forschungsgemeinschaft"}],"funders":[{"id":"https://openalex.org/F4320320879","display_name":"Deutsche Forschungsgemeinschaft","ror":"https://ror.org/018mejw64"}],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2580029075.pdf","grobid_xml":"https://content.openalex.org/works/W2580029075.grobid-xml"},"referenced_works_count":5,"referenced_works":["https://openalex.org/W1880872281","https://openalex.org/W1917918477","https://openalex.org/W2589615383","https://openalex.org/W4399547856","https://openalex.org/W4399584384"],"related_works":[],"abstract_inverted_index":{"Dynamically":[0],"typed":[1],"programming":[2],"languages":[3],"like":[4],"R":[5,34,134,164,207],"allow":[6],"programmers":[7],"to":[8,16,60,101,108,122,146,197],"write":[9,157],"generic,":[10],"flexible":[11],"and":[12,15,73,84,107,111,126,136,188],"concise":[13],"code":[14,165],"interact":[17],"with":[18,182],"the":[19,33,40,49,65,70,88,124,130,153,176],"language":[20],"using":[21,175],"an":[22,54],"interactive":[23],"Read-eval-print-loop":[24],"(REPL).":[25],"However,":[26],"this":[27,57],"flexibility":[28],"has":[29,36],"its":[30],"price:":[31],"As":[32,94],"interpreter":[35],"no":[37],"information":[38],"about":[39],"expected":[41],"variable":[42,137],"type,":[43],"many":[44,167],"base":[45],"functions":[46,121],"automatically":[47],"convert":[48],"input":[50,104],"instead":[51],"of":[52,90,120,129,184],"raising":[53],"exception.":[55],"Unfortunately,":[56],"frequently":[58,132],"leads":[59],"runtime":[61,106],"errors":[62],"deeper":[63],"down":[64],"call":[66],"stack":[67],"which":[68,161],"obfuscates":[69],"original":[71],"problem":[72],"renders":[74],"debugging":[75],"challenging.":[76],"Even":[77],"worse,":[78],"unwanted":[79],"conversions":[80],"can":[81,98,155],"remain":[82],"undetected":[83],"skew":[85],"or":[86],"invalidate":[87],"results":[89],"a":[91,95,118],"statistical":[92],"analysis.":[93],"resort,":[96],"assertions":[97,160,199],"be":[99],"employed":[100],"detect":[102],"unexpected":[103],"during":[105],"signal":[109],"understandable":[110],"traceable":[112],"errors.":[113],"The":[114,139],"package":[115,140,195],"\"checkmate\"":[116],"provides":[117],"plethora":[119],"check":[123],"type":[125],"related":[127],"properties":[128],"most":[131],"used":[133],"objects":[135,208],"types.":[138],"is":[141],"mostly":[142],"written":[143],"in":[144,212,214],"C":[145,190],"avoid":[147],"any":[148],"unnecessary":[149],"performance":[150],"overhead.":[151],"Thus,":[152],"programmer":[154],"conveniently":[156],"concise,":[158],"well-tested":[159],"outperforms":[162],"custom":[163],"for":[166,194,206],"applications.":[168],"Furthermore,":[169],"checkmate":[170],"simplifies":[171],"writing":[172],"unit":[173],"tests":[174],"framework":[177],"\"testthat\"":[178],"by":[179],"extending":[180],"it":[181],"plenty":[183],"additional":[185],"expectation":[186],"functions,":[187],"registered":[189],"routines":[191],"are":[192],"available":[193],"developers":[196],"perform":[198],"on":[200],"arbitrary":[201],"SEXPs":[202],"(internal":[203],"data":[204],"structure":[205],"implemented":[209],"as":[210],"struct":[211],"C)":[213],"compiled":[215],"code.":[216]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":4},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":7},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":4},{"year":2018,"cited_by_count":1}],"updated_date":"2026-07-13T07:31:44.756512","created_date":"2017-02-03T00:00:00"}
