quarto-dev / quarto-dev/quarto-cli

Partial matching of parameters is confusing

Offen
#7,393 2 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@cderv arbeitet bereits daran.

Seit 31.10.2023.

bug engines-knitr
Vorherrschende Sprache
JavaScript
Sterne
6k
Forks
458
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
41

Beschreibung

In Quarto 1.4.451, create the following dashboard with parameters:

---
title: "Sample dashboard"
format: dashboard
engine: knitr
params:
  hello: 1
  mello: "a character"
---

This should print out the value of `params$hello`: `{r} params$hello`.

This should print out the value of `params$mello`: `{r} params$mello`.

This shouldn't work because it's looking for a parameter that doesn't exist, `params$jello`: `{r} params$jello`.

This also shouldn't work because it's looking for a parameter that doesn't exist, `params$m`, but it does partial matching to `params$mello`, and the document renders: `{r} params$m`

It works, but I think it would be better if partial matching wasn't enabled by default for parameters.

Screenshot 2023-10-29 at 2 44 29 AM

Then add the following and re-render:

This doesn't work because it's doing partial matching and then failing when adding a number to a character `params$m + 2`: `{r} params$m + 2`.

You get the following error:

Quitting from lines 2-18 (untitled.qmd)
Error in `params$m + 2`:
! non-numeric argument to binary operator
Backtrace:
 1. .QuartoInlineRender(params$m + 2)
                                                                                          
Execution halted

It makes sense why this happens, but again, not doing partial matching by default would be less confusing.

Additionally, if I set partial matching to warn in the YAML of my document, e.g.,

knitr:
    opts_chunk:
      R.options:
        warnPartialMatchDollar: true

the first example with partial matching still runs, which was even more surprising to me.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.