1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> 3 4<meta charset="utf-8"> 5<meta name="generator" content="quarto-1.10.18"> 6 7<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> 8 9 10<title>index â R Consortium</title> 11<style> 12/* Default styles provided by pandoc. 13** See https://pandoc.org/MANUAL.html#variables-for-html for config info. 14*/ 15span.smallcaps{font-variant: small-caps;} 16div.columns{display: flex; gap: 1.5em;} 17div.column{flex: auto;} 18@media screen { 19div.columns{gap: min(4vw, 1.5em);} 20div.column{overflow-x: auto;} 21} 22div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} 23ul.task-list{list-style: none;} 24ul.task-list li input[type="checkbox"] { 25 width: 0.8em; 26 margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 27 vertical-align: middle; 28} 29</style> 30 31
32<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 32
32
33<script src="../site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 33
33
34<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
vendor: 1 bytes, line 34
34
35<script src="../site_libs/quarto-search/fuse.min.js"></script>
vendor: 1 bytes, line 35
35
36<script src="../site_libs/quarto-search/quarto-search.js"></script>
36 37<meta name="quarto:offset" content="../"> 38<link href="..//images/rc-favicon.svg" rel="icon" type="image/svg+xml">
39<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
vendor: 1 bytes, line 39
39
40<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
vendor: 1 bytes, line 40
40
41<script src="../site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 41
41
42<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
vendor: 1 bytes, line 42
42
43<script src="../site_libs/quarto-html/anchor.min.js"></script>
43 44<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet"> 45<link href="../site_libs/quarto-html/quarto-syntax-highlighting-64a204ab8560d761af7679ceaba22944.css" rel="stylesheet" id="quarto-text-highlighting-styles">
46<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
46 47<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> 48<link href="../site_libs/bootstrap/bootstrap-609e0ed9670d325724d610bb306d8b49.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light"> 49<link href="../site_libs/quarto-contrib/bootstrap-icons-1.13.1/bootstrap-icons.css" rel="stylesheet">
50<script id="quarto-search-options" type="application/json">{ 51 "location": "navbar", 52 "copy-button": false, 53 "collapse-after": 3, 54 "panel-placement": "end", 55 "type": "overlay", 56 "limit": 50, 57 "keyboard-shortcut": [ 58 "f", 59 "/", 60 "s" 61 ], 62 "show-item-context": false, 63 "language": { 64 "search-no-results-text": "No results", 65 "search-matching-documents-text": "matching documents", 66 "search-copy-link-title": "Copy link to search", 67 "search-hide-matches-text": "Hide additional matches", 68 "search-more-match-text": "more match in this document", 69 "search-more-matches-text": "more matches in this document", 70 "search-clear-button-title": "Clear", 71 "search-text-placeholder": "", 72 "search-detached-cancel-button-title": "Cancel", 73 "search-submit-button-title": "Submit", 74 "search-label": "Search" 75 } 76}</script>
vendor: 67 bytes, lines 76-77
76 77<script async="" src="https://www.googletagmanager.com/gtag/js?id=
77G-B697SX1BNN
vendor: 13 bytes, lines 77-78
77"></script> 78
79<script type="text/javascript"> 80
vendor: 127 bytes, lines 81-84
81window.dataLayer = window.dataLayer || []; 82function gtag(){dataLayer.push(arguments);} 83gtag('js', new Date()); 84gtag('config', '
84G-B697SX1BNN
vendor: 29 bytes, line 84
84', { 'anonymize_ip': true});
85</script>
85 86 87 88<link rel="stylesheet" href="../styles.css"> 89</head> 90 91<body class="nav-fixed fullcontent quarto-light"> 92 93<div id="quarto-search-results"></div> 94 <header id="quarto-header" class="headroom fixed-top"> 95 <nav class="navbar navbar-expand-lg " data-bs-theme="dark"> 96 <div class="navbar-container container-fluid"> 97 <div class="navbar-brand-container mx-auto"> 98 <a href="../index.html" class="navbar-brand navbar-brand-logo"> 99 <img src="../images/RConsortium_Horizontal_Pantone.webp" alt="R Consortium logo" class="navbar-logo light-content"> 100 <img src="../images/RConsortium_Horizontal_Pantone.webp" alt="R Consortium logo" class="navbar-logo dark-content"> 101 </a> 102 </div> 103 <div id="quarto-search" class="" title="Search"></div> 104 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> 105 <span class="navbar-toggler-icon"></span> 106</button> 107 <div class="collapse navbar-collapse" id="navbarCollapse"> 108 <ul class="navbar-nav navbar-nav-scroll ms-auto"> 109 <li class="nav-item dropdown "> 110 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-about" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 111 <span class="menu-text">About</span> 112 </a> 113 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-about"> 114 <li> 115 <a class="dropdown-item" href="../about/index.html"> 116 <span class="dropdown-text">Mission</span></a> 117 </li> 118 <li> 119 <a class="dropdown-item" href="../about/governance.html"> 120 <span class="dropdown-text">Governance</span></a> 121 </li> 122 <li> 123 <a class="dropdown-item" href="../rc-docs/R-Consortium-Bylaws-7-9-2024.pdf"> 124 <span class="dropdown-text">Bylaws (PDF)</span></a> 125 </li> 126 <li> 127 <a class="dropdown-item" href="../governance/isc-charter.html"> 128 <span class="dropdown-text">ISC Charter</span></a> 129 </li> 130 <li> 131 <a class="dropdown-item" href="../rc-docs/R-Consortium-Marketing-Committee-Charter-2021-10-27.pdf"> 132 <span class="dropdown-text">Marketing Committee Charter (PDF)</span></a> 133 </li> 134 <li> 135 <a class="dropdown-item" href="../about/faq.html"> 136 <span class="dropdown-text">FAQ</span></a> 137 </li> 138 <li> 139 <a class="dropdown-item" href="../about/contact.html"> 140 <span class="dropdown-text">Contact</span></a> 141 </li> 142 <li> 143 <a class="dropdown-item" href="../about/privacy.html"> 144 <span class="dropdown-text">Privacy Policy</span></a> 145 </li> 146 </ul> 147 </li> 148 <li class="nav-item dropdown "> 149 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-members" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 150 <span class="menu-text">Members</span> 151 </a> 152 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-members"> 153 <li> 154 <a class="dropdown-item" href="../members.html"> 155 <span class="dropdown-text">Members</span></a> 156 </li> 157 <li> 158 <a class="dropdown-item" href="../about/join.html"> 159 <span class="dropdown-text">Join</span></a> 160 </li> 161 <li> 162 <a class="dropdown-item" href="../rc-docs/R-Consortium-Membership-Agreement-1157181-v2-Approved-11.20.19.pdf"> 163 <span class="dropdown-text">Membership Agreement (PDF)</span></a> 164 </li> 165 </ul> 166 </li> 167 <li class="nav-item dropdown "> 168 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-grants" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 169 <span class="menu-text">Grants</span> 170 </a> 171 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-grants"> 172 <li> 173 <a class="dropdown-item" href="../all-projects/index.html"> 174 <span class="dropdown-text">Goal of ISC Grants Program</span></a> 175 </li> 176 <li> 177 <a class="dropdown-item" href="../all-projects/funded-projects.html"> 178 <span class="dropdown-text">Recipients of ISC Grants</span></a> 179 </li> 180 <li> 181 <a class="dropdown-item" href="../all-projects/callforproposals.html"> 182 <span class="dropdown-text">Call for Proposals</span></a> 183 </li> 184 <li> 185 <a class="dropdown-item" href="../all-projects/rugsprogram.html"> 186 <span class="dropdown-text">RUGS Program</span></a> 187 </li> 188 <li> 189 <a class="dropdown-item" href="../all-projects/submittingforpayment.html"> 190 <span class="dropdown-text">Submitting for payment</span></a> 191 </li> 192 </ul> 193 </li> 194 <li class="nav-item dropdown "> 195 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-projects" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 196 <span class="menu-text">Projects</span> 197 </a> 198 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-projects"> 199 <li> 200 <a class="dropdown-item" href="https://rladies.org/"> 201 <span class="dropdown-text">R-Ladies</span></a> 202 </li> 203 <li> 204 <a class="dropdown-item" href="https://r-dbi.org/"> 205 <span class="dropdown-text">DBI</span></a> 206 </li> 207 <li> 208 <a class="dropdown-item" href="https://r-universe.dev/search"> 209 <span class="dropdown-text">
209R-Universe</span></a> 210 </li> 211 <li> 212 <a class="dropdown-item" href="../all-projects/isc-working-groups.html"> 213 <span class="dropdown-text">Working Groups</span></a> 214 </li> 215 <li> 216 <a class="dropdown-item" href="../all-projects/previous-top-level-projects.html"> 217 <span class="dropdown-text">Previous Top-Level Projects</span></a> 218 </li> 219 </ul> 220 </li> 221 <li class="nav-item dropdown "> 222 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-events" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 223 <span class="menu-text">Events</span> 224 </a> 225 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-events"> 226 <li> 227 <a class="dropdown-item" href="https://rconsortium.github.io/RplusAI_website/"> 228 <span class="dropdown-text">R+AI 2026 (Nov 10-11, 2026)</span></a> 229 </li> 230 <li> 231 <a class="dropdown-item" href="../webinars/webinars.html"> 232 <span class="dropdown-text">Webinars</span></a> 233 </li> 234 <li> 235 <a class="dropdown-item" href="../news/events.html"> 236 <span class="dropdown-text">Events</span></a> 237 </li> 238 <li> 239 <a class="dropdown-item" href="../news/cal.html"> 240 <span class="dropdown-text">Working Groups Calendar</span></a> 241 </li> 242 </ul> 243 </li> 244 <li class="nav-item dropdown "> 245 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-news" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 246 <span class="menu-text">News</span> 247 </a> 248 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-news"> 249 <li> 250 <a class="dropdown-item" href="../blog/index.html"> 251 <span class="dropdown-text">Blog</span></a> 252 </li> 253 <li> 254 <a class="dropdown-item" href="../newsletters/newsletters.html"> 255 <span class="dropdown-text">Newsletter</span></a> 256 </li> 257 </ul> 258 </li> 259 <li class="nav-item"> 260 <a class="nav-link" href="../codeofconduct.html"> 261<span class="menu-text">Code of Conduct</span></a> 262 </li> 263 <li class="nav-item compact"> 264 <a class="nav-link" href="https://github.com/rconsortium"> <i class="bi bi-github" role="img"> 265</i> 266<span class="menu-text"></span></a> 267 </li> 268 <li class="nav-item compact"> 269 <a class="nav-link" href="https://www.linkedin.com/company/r-consortium/"> <i class="bi bi-linkedin" role="img"> 270</i> 271<span class="menu-text"></span></a> 272 </li> 273 <li class="nav-item compact"> 274 <a class="nav-link" href="https://fosstodon.org/@RConsortium"> <i class="bi bi-mastodon" role="img"> 275</i> 276<span class="menu-text"></span></a> 277 </li> 278 <li class="nav-item"> 279 <a class="nav-link" href="https://bsky.app/profile/rconsortium.bsky.social"> 280<span class="menu-text"><i class="bi-bluesky " style="" role="img" aria-hidden="true"></i></span></a> 281 </li> 282 <li class="nav-item compact"> 283 <a class="nav-link" href="https://www.youtube.com/@RConsortium"> <i class="bi bi-youtube" role="img"> 284</i> 285<span class="menu-text"></span></a> 286 </li> 287</ul> 288 </div> <!-- /navcollapse --> 289 <div class="quarto-navbar-tools"> 290</div> 291 </div> <!-- /container-fluid --> 292 </nav> 293</header> 294<!-- content --> 295<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar"> 296<!-- sidebar --> 297<!-- margin-sidebar --> 298 299<!-- main --> 300<main class="content" id="quarto-document-content"><header id="title-block-header" class="quarto-title-block"></header> 301 302 303 304 305<section id="r-consortium-mission-statement" class="level1"> 306<h1>R Consortium Mission Statement</h1> 307<p>The R Consortium promotes the growth and development of the R language and its ecosystem by supporting technical and social infrastructure, fostering community engagement, and driving industry adoption.</p> 308<p>We work to ensure a thriving, diverse global R community by providing resources, facilitating collaboration, and advocating for the use of R in multiple industry sectors.</p> 309<p>We provide funding for technical infrastructure through grants and working groups.</p> 310<p>We provide funding for social infrastructure through grants for R user groups and events around the world.</p> 311<p>We provide a neutral space where industry, academia, and government can collaborate on mission critical processes and standards.</p> 312 313 314</section> 315 316</main> <!-- /main -->
317<script id="quarto-html-after-body" type="application/javascript"> 318 window.document.addEventListener("DOMContentLoaded", function (event) { 319 const icon = "î§"; 320 const anchorJS = new window.AnchorJS(); 321 anchorJS.options = { 322 placement: 'right', 323 icon: icon 324 }; 325 anchorJS.add('.anchored'); 326 const isCodeAnnotation = (el) => { 327 for (const clz of el.classList) { 328 if (clz.startsWith('code-annotation-')) { 329 return true; 330 } 331 } 332 return false; 333 } 334 const onCopySuccess = function(e) { 335 // button target 336 const button = e.trigger; 337 // don't keep focus 338 button.blur(); 339 // flash "checked" 340 button.classList.add('code-copy-button-checked'); 341 var currentTitle = button.getAttribute("title"); 342 button.setAttribute("title", "Copied!"); 343 let tooltip; 344 if (window.bootstrap) { 345 button.setAttribute("data-bs-toggle", "tooltip"); 346 button.setAttribute("data-bs-placement", "left"); 347 button.setAttribute("data-bs-title", "Copied!"); 348 tooltip = new bootstrap.Tooltip(button, 349 { trigger: "manual", 350 customClass: "code-copy-button-tooltip", 351 offset: [0, -8]}); 352 tooltip.show(); 353 } 354 setTimeout(function() { 355 if (tooltip) { 356 tooltip.hide(); 357 button.removeAttribute("data-bs-title"); 358 button.removeAttribute("data-bs-toggle"); 359 button.removeAttribute("data-bs-placement"); 360 } 361 button.setAttribute("title", currentTitle); 362 button.classList.remove('code-copy-button-checked'); 363 }, 1000); 364 // clear code selection 365 e.clearSelection(); 366 } 367 const getTextToCopy = function(trigger) { 368 const outerScaffold = trigger.parentElement.cloneNode(true); 369 const codeEl = outerScaffold.querySelector('code'); 370 for (const childEl of codeEl.children) { 371 if (isCodeAnnotation(childEl)) { 372 childEl.remove(); 373 } 374 } 375 return codeEl.innerText; 376 } 377 const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', { 378 text: getTextToCopy 379 }); 380 clipboard.on('success', onCopySuccess); 381 if (window.document.getElementById('quarto-embedded-source-code-modal')) { 382 const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', { 383 text: getTextToCopy, 384 container: window.document.getElementById('quarto-embedded-source-code-modal') 385 }); 386 clipboardModal.on('success', onCopySuccess); 387 } 388 var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); 389 var mailtoRegex = new RegExp(/^mailto:/); 390 var filterRegex = new RegExp("https:\/\/r-consortium\.org"); 391 var isInternal = (href) => { 392 return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); 393 } 394 // Inspect non-navigation links and adorn them if external 395 var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)'); 396 for (var i=0; i<links.length; i++) { 397 const link = links[i]; 398 if (!isInternal(link.href)) { 399 // undo the damage that might have been done by quarto-nav.js in the case of 400 // links that we want to consider external 401 if (link.dataset.originalHref !== undefined) { 402 link.href = link.dataset.originalHref; 403 } 404 } 405 } 406 function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) { 407 const config = { 408 allowHTML: true, 409 maxWidth: 500, 410 delay: 100, 411 arrow: false, 412 appendTo: function(el) { 413 return el.parentElement; 414 }, 415 interactive: true, 416 interactiveBorder: 10, 417 theme: 'quarto', 418 placement: 'bottom-start', 419 }; 420 if (contentFn) { 421 config.content = contentFn; 422 } 423 if (onTriggerFn) { 424 config.onTrigger = onTriggerFn; 425 } 426 if (onUntriggerFn) { 427 config.onUntrigger = onUntriggerFn; 428 } 429 window.tippy(el, config); 430 } 431 const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); 432 for (var i=0; i<noterefs.length; i++) { 433 const ref = noterefs[i]; 434 tippyHover(ref, function() { 435 // use id or data attribute instead here 436 let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); 437 try { href = new URL(href).hash; } catch {} 438 const id = href.replace(/^#\/?/, ""); 439 const note = window.document.getElementById(id); 440 if (note) { 441 return note.innerHTML; 442 } else { 443 return ""; 444 } 445 }); 446 } 447 const xrefs = window.document.querySelectorAll('a.quarto-xref'); 448 const processXRef = (id, note) => { 449 // Strip column container classes 450 const stripColumnClz = (el) => { 451 el.classList.remove("page-full", "page-columns"); 452 if (el.children) { 453 for (const child of el.children) {
454 stripColumnClz(child); 455 } 456 } 457 } 458 stripColumnClz(note) 459 if (id === null || id.startsWith('sec-')) { 460 // Special case sections, only their first couple elements 461 const container = document.createElement("div"); 462 if (note.children && note.children.length > 2) { 463 container.appendChild(note.children[0].cloneNode(true)); 464 for (let i = 1; i < note.children.length; i++) { 465 const child = note.children[i]; 466 if (child.tagName === "P" && child.innerText === "") { 467 continue; 468 } else { 469 container.appendChild(child.cloneNode(true)); 470 break; 471 } 472 } 473 if (window.Quarto?.typesetMath) { 474 window.Quarto.typesetMath(container); 475 } 476 return container.innerHTML 477 } else { 478 if (window.Quarto?.typesetMath) { 479 window.Quarto.typesetMath(note); 480 } 481 return note.innerHTML; 482 } 483 } else { 484 // Remove any anchor links if they are present 485 const anchorLink = note.querySelector('a.anchorjs-link'); 486 if (anchorLink) { 487 anchorLink.remove(); 488 } 489 if (window.Quarto?.typesetMath) { 490 window.Quarto.typesetMath(note); 491 } 492 if (note.classList.contains("callout")) { 493 return note.outerHTML; 494 } else { 495 return note.innerHTML; 496 } 497 } 498 } 499 for (var i=0; i<xrefs.length; i++) { 500 const xref = xrefs[i]; 501 tippyHover(xref, undefined, function(instance) { 502 instance.disable(); 503 let url = xref.getAttribute('href'); 504 let hash = undefined; 505 if (url.startsWith('#')) { 506 hash = url; 507 } else { 508 try { hash = new URL(url).hash; } catch {} 509 } 510 if (hash) { 511 const id = hash.replace(/^#\/?/, ""); 512 const note = window.document.getElementById(id); 513 if (note !== null) { 514 try { 515 const html = processXRef(id, note.cloneNode(true)); 516 instance.setContent(html); 517 } finally { 518 instance.enable(); 519 instance.show(); 520 } 521 } else { 522 // See if we can fetch this 523 fetch(url.split('#')[0]) 524 .then(res => res.text()) 525 .then(html => { 526 const parser = new DOMParser(); 527 const htmlDoc = parser.parseFromString(html, "text/html"); 528 const note = htmlDoc.getElementById(id); 529 if (note !== null) { 530 const html = processXRef(id, note); 531 instance.setContent(html); 532 } 533 }).finally(() => { 534 instance.enable(); 535 instance.show(); 536 }); 537 } 538 } else { 539 // See if we can fetch a full url (with no hash to target) 540 // This is a special case and we should probably do some content thinning / targeting 541 fetch(url) 542 .then(res => res.text()) 543 .then(html => { 544 const parser = new DOMParser(); 545 const htmlDoc = parser.parseFromString(html, "text/html"); 546 const note = htmlDoc.querySelector('main.content'); 547 if (note !== null) { 548 // This should only happen for chapter cross references 549 // (since there is no id in the URL) 550 // remove the first header 551 if (note.children.length > 0 && note.children[0].tagName === "HEADER") { 552 note.children[0].remove(); 553 } 554 const html = processXRef(null, note); 555 instance.setContent(html); 556 } 557 }).finally(() => { 558 instance.enable(); 559 instance.show(); 560 }); 561 } 562 }, function(instance) { 563 }); 564 } 565 let selectedAnnoteEl; 566 const selectorForAnnotation = ( cell, annotation) => { 567 let cellAttr = 'data-code-cell="' + cell + '"'; 568 let lineAttr = 'data-code-annotation="' + annotation + '"'; 569 const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; 570 return selector; 571 } 572 const selectCodeLines = (annoteEl) => { 573 const doc = window.document; 574 const targetCell = annoteEl.getAttribute("data-target-cell"); 575 const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); 576 const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); 577 const lines = annoteSpan.getAttribute("data-code-lines").split(","); 578 const lineIds = lines.map((line) => { 579 return targetCell + "-" + line; 580 }) 581 let top = null; 582 let height = null; 583 let parent = null; 584 if (lineIds.length > 0) { 585 //compute the position of the single el (top and bottom and make a div) 586 const el = window.document.getElementById(lineIds[0]); 587 top = el.offsetTop; 588 height = el.offsetHeight; 589 parent = el.parentElement.parentElement; 590 if (lineIds.length > 1) { 591 const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); 592 const bottom = lastEl.offsetTop + lastEl.offsetHeight; 593 height = bottom - top; 594 } 595 if (top !== null && height !== null && parent !== null) { 596 // cook up a div (if necessary) and position it 597 let div = window.document.getElementById("code-annotation-line-highlight"); 598 if (div === null) { 599 div = window.document.createElement("div"); 600 div.setAttribute("id", "code-annotation-line-highlight"); 601 div.style.position = 'absolute'; 602 parent.appendChild(div); 603 } 604 div.style.top = top - 2 + "px"; 605 div.style.height = height + 4 + "px"; 606 div.style.left = 0; 607 let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); 608 if (gutterDiv === null) { 609 gutterDiv = window.document.createElement("div"); 610 gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); 611 gutterDiv.style.position = 'absolute'; 612 const codeCell = window.document.getElementById(targetCell); 613 const gutter = codeCell.querySelector('.code-annotation-gutter'); 614 gutter.appendChild(gutterDiv); 615 } 616 gutterDiv.style.top = top - 2 + "px"; 617 gutterDiv.style.height = height + 4 + "px"; 618 } 619 selectedAnnoteEl = annoteEl; 620 } 621 }; 622 const unselectCodeLines = () => { 623 const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; 624 elementsIds.forEach((elId) => { 625 const div = window.document.getElementById(elId); 626 if (div) { 627 div.remove(); 628 } 629 }); 630 selectedAnnoteEl = undefined; 631 }; 632 // Handle positioning of the toggle 633 window.addEventListener( 634 "resize", 635 throttle(() => { 636 elRect = undefined; 637 if (selectedAnnoteEl) { 638 selectCodeLines(selectedAnnoteEl); 639 } 640 }, 10) 641 ); 642 function throttle(fn, ms) { 643 let throttle = false;
644 let timer; 645 return (...args) => { 646 if(!throttle) { // first call gets through 647 fn.apply(this, args); 648 throttle = true; 649 } else { // all the others get throttled 650 if(timer) clearTimeout(timer); // cancel #2 651 timer = setTimeout(() => { 652 fn.apply(this, args); 653 timer = throttle = false; 654 }, ms); 655 } 656 }; 657 } 658 // Attach click handler to the DT 659 const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); 660 for (const annoteDlNode of annoteDls) { 661 annoteDlNode.addEventListener('click', (event) => { 662 const clickedEl = event.target; 663 if (clickedEl !== selectedAnnoteEl) { 664 unselectCodeLines(); 665 const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); 666 if (activeEl) { 667 activeEl.classList.remove('code-annotation-active'); 668 } 669 selectCodeLines(clickedEl); 670 clickedEl.classList.add('code-annotation-active'); 671 } else { 672 // Unselect the line 673 unselectCodeLines(); 674 clickedEl.classList.remove('code-annotation-active'); 675 } 676 }); 677 } 678 const findCites = (el) => { 679 const parentEl = el.parentElement; 680 if (parentEl) { 681 const cites = parentEl.dataset.cites; 682 if (cites) { 683 return { 684 el, 685 cites: cites.split(' ') 686 }; 687 } else { 688 return findCites(el.parentElement) 689 } 690 } else { 691 return undefined; 692 } 693 }; 694 var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); 695 for (var i=0; i<bibliorefs.length; i++) { 696 const ref = bibliorefs[i]; 697 const citeInfo = findCites(ref); 698 if (citeInfo) { 699 tippyHover(citeInfo.el, function() { 700 var popup = window.document.createElement('div'); 701 citeInfo.cites.forEach(function(cite) { 702 var citeDiv = window.document.createElement('div'); 703 citeDiv.classList.add('hanging-indent'); 704 citeDiv.classList.add('csl-entry'); 705 var biblioDiv = window.document.getElementById('ref-' + cite); 706 if (biblioDiv) { 707 citeDiv.innerHTML = biblioDiv.innerHTML; 708 } 709 popup.appendChild(citeDiv); 710 }); 711 return popup.innerHTML; 712 }); 713 } 714 } 715 }); 716 </script>
716 717</div> <!-- /content --> 718<footer class="footer"> 719 <div class="nav-footer"> 720 <div class="nav-footer-left"> 721 722 </div> 723 <div class="nav-footer-center"> 724<p>© 2026 R Consortium. R Consortium is a non-profit organization, and R Consortium⢠is a trademark of R Consortium. All Rights Reserved.<br>This website is built on Quarto, an open-source scientific and technical publishing system. Quarto uses R Markdown and knitr to execute R code.<br>Contact us at: [email protected]</p> 725</div> 726 <div class="nav-footer-right"> 727 728 </div> 729 </div> 730</footer> 731 732 733 734 735</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.