plot.R: non-NA row-count filter collapses to a scalar, giving wrong point nudge spacing
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #162 di @yihui — integrata
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- r
- Ambito
- data-visualization
Direzione di ricerca
Il bug si trova in R/plot.R, righe 211, 500 e 852, all'interno delle funzioni plot_dot(), plot_errorbar() e table_panel(). Iniziate leggendo la logica attuale del filtro di conteggio righe e il riproduttore fornito. La correzione consiste nel sostituire la somma scalare con rowSums per filtrare le righe non interamente NA. Testate la modifica eseguendo il riproduttore e controllando il percorso di tracciatura RTF statico (rtf_static_forestly()).
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In plot_dot(), plot_errorbar(), and table_panel() the per-item vertical nudge is computed from a "count of rows that are not fully NA" (R/plot.R, e.g. lines 211, 500, 852):
row_count <- max(nrow(x[!sum(is.na(x[, 1:n_col])) == n_col, ]), 1)
The index expression does not do what it looks like. sum(is.na(x[, 1:n_col])) sums NAs over the entire sub-frame, producing a single scalar; !scalar == n_col is therefore one logical value, which is recycled across all rows. So the filter keeps all rows or zero rows, never a per-row subset.
Reproducer (n_col = 2):
sel <- function(df) { keep <- !sum(is.na(df[,1:2])) == 2; nrow(df[keep,,drop=FALSE]) }
sel(data.frame(x1=c(1,2), x2=c(3,4))) # 2 (no NA -> keep all)
sel(data.frame(x1=c(1,NA), x2=c(3,NA))) # 0 (2 NAs total -> drop all)
Effect: row_count equals the full group size in the normal case, but is forced to 1 whenever a group happens to contain exactly n_col NA values total, which changes nudge_unit(row_count) and misplaces the plotted points vertically. This only affects the static RTF plotting path (rtf_static_forestly()), and the visual effect is subtle, but the logic is incorrect.
Likely intended: count rows that are not entirely NA, per row, e.g.
not_all_na <- rowSums(is.na(x[, 1:n_col])) != n_col
row_count <- max(sum(not_all_na), 1)
The same expression is duplicated in all three functions and should be fixed once (see also the broader duplication across these functions).
- Lingua principale
- R
- Stelle
- 23
- Fork
- 6
- Merge medio
- 2g 3h
- PR unite (30g)
- 15
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Merck/forestly
-
Installed vignettes show blank tables/plots: self_contained: no drops lt assets on R CMD buildAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Correct the misspelled `dowload_button` argument in ae_forestly()?Forse già presa @yihui l’ha presa 8 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Merck/forestly#173 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
-
Allow numerical filtering for percentagesForse già presa @yihui l’ha presa 14 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
Merck/forestly#166 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Merck/forestly
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
add bootmlmAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
extendr/extendr.github.io#134 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
nmfs-ost/stockplotr#416 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100