Programmēšana

Kā izveidot tabulas R ar paplašināmām rindām

Interaktīvas tabulas ar meklēšanu un šķirošanu var būt lielisks veids, kā izpētīt datus. Dažreiz, iespējams, vēlēsities kopīgot šos datus ar citiem cilvēkiem, tostarp tikai teksta datus, piemēram, sarakstu Do Do With With R video pamācības.

Bet, ja šajos datos ir kolonna ar diezgan gariem ierakstiem, šī kolonna var nebūt labi piemērota jūsu ekrāna platuma tabulai. Tas var būt īpaši sarežģīti, ja ne katrā rindā ir iekļauta ļoti plaša kolonna. Piemēram, aptaujas rezultātu tabula, kur viens lauks ir “Vai jums ir kādi papildu komentāri?” Ne visi drīkst.

Tur noderēs galds ar paplašināmām rindām. NICAR datu žurnālistikas konferencē šī gada sākumā es ievietoju veidlapu, lai runātāji (un citi dalībnieki) varētu iesniegt saites uz sesijas prezentācijām. Daži cilvēki pievienoja papildu komentārus; citi to nedarīja. Pēc noklusējuma šīs kolonnas rādīšana iztērētu daudz ekrāna nekustamo īpašumu.

Tā vietā šis komentāru lauks tiek parādīts manā interaktīvajā NICAR resursu tabulā tikai tad, ja lietotājs noklikšķina uz izvērstās rindas ikonas. Ne katru rindu var izvērst ar noklikšķināmu ikonu tēmas nosaukuma kreisajā pusē, jo ne katrā rindā ir dati šajā laukā, kā jūs (cerams) varat redzēt zemāk redzamajā ekrānuzņēmumā.

Sharon Machlis,

Apskatīsim, kā izveidot šādu galdu.

Ja vēlaties sekot līdzi, instalējiet un ielādējiet reaģējamo pakotni. Lai veiktu šo demonstrāciju, jums būs jāinstalē arī rio, līme, htmltools un dplyr pakotnes.

Datus, kurus izmantošu šajā demonstrācijā, varat lejupielādēt no tālāk esošās saites. Tā ir maza (15 rindu) datu kopa par R un Python sesijas šī gada NICAR konferencē.

lejuplādēt Dari vairāk ar R Demo datu kopu tabulām ar paplašināmām rindām 15 informācijas rindas par R un Python sesijām NICAR 2020. gada datu žurnālistikas konferencē Sharon Machlis

Slodze reaģējama un dplyr R

Zemāk esošajā kodā es ielādēju reaģējamu un dplyr un pēc tam importēju savus datus, izmantojot Rio :: importēt ()

bibliotēka (reaģējama)

bibliotēka (dplyr)

nicar <- rio :: import ("nicar.csv")

Datos ir kolonnas resursa nosaukumam (Kas), autoram (Kas), TheURL, Tagi, Tips un Komentāri.

Pēc tam es vēlos izveidot jaunu kolonnu ar nosaukumu Resursi ar klikšķināmu saiti uz katru resursu. Es tikai rakstu nelielu HTML kodu, izmantojot slejas Kas un TheURL, lai lietotājiem būtu vieglāk nokļūt tabulā parādītajos resursos.

Tad es atlasu vēlamās kolonnas vēlamajā secībā.

nicar%

mutēt (

Resurss = līme :: līme ("{Kas}")

) %>%

atlasīt (Resurss, Kas, Tagi, Tips, Komentāri)

Sāciet ar pamata reaģējamo tabulu

Visbeidzot, es izveidoju pamata, noklusējuma reaģējamu tabulu.

reaģējams (nicar)

Un šī tabula ir pamata. Vēl nav meklēšanas lodziņa, un kolonnā Resursi tiek parādīts faktiskais HTML kods tā vietā, lai parādītu kā HTML

Sharon Machlis,

Nākamajā kodu grupā tabulai pievienoju meklēšanas lodziņu un mazas bultiņu ikonas, kas parāda, ka kolonnas ir kārtojamas.

reaģējams (nicar, meklējams = TRUE, showSortable = TRUE, showSortIcon = TRUE)

Lai norādītu, ka Resursu kolonnu var parādīt kā HTML, es izmantoju argumentu slejas un sarakstu, kur colDef iestata vienas vai vairāku kolonnu atribūtus. Zemāk es iestatu html = true kolonnai Resurss, lai tā tiktu rādīta kā HTML, un es arī padarīju šīs kolonnas izmēru maināmu.

reaģējams (nicar, meklējams = TRUE, showSortable = TRUE, showSortIcon = TRUE,

kolonnas = saraksts (

Resurss = colDef (html = TRUE, maināms lielums = TRUE)

)

)

Lai pateiktu, ka reaģējams galvenajā tabulā neparādīt kolonnu Komentāri, es iestatīju colDef (parādīt = FALSE).

reaģējams (nicar, meklējams = TRUE, showSortable = TRUE, showSortIcon = TRUE,

kolonnas = saraksts (

Resurss = colDef (html = TRUE, maināms lielums = TRUE),

Komentāri = colDef (rādīt = FALSE)

)

)

Tik tālu, labi.

Sharon Machlis,

Pievienojiet reaģējamo kodu paplašināmām rindām

Nākamais solis ir paplašināmo rindu pievienošana, un tas ir nedaudz sarežģītāk:

# Funkcija ir nepieciešama saskaņā ar Grega Linu, reaģējamu radītāju

html <- function (x, inline = FALSE) {

konteiners <- if (inline) htmltools :: span else htmltools :: div

konteiners (bīstamiSetInnerHTML = saraksts ("__ html" = x))

}

reaģējams (nicar, meklējams = TRUE, showSortable = TRUE,

kolonnas = saraksts (

Resurss = colDef (html = TRUE, maināms lielums = TRUE),

Komentāri = colDef (rādīt = FALSE)

),

# ja pastāv komentārs, padariet rindu izvēršamu

detaļas = funkcija (rādītājs) {

if (nicar $ Komentāri [rādītājs]! = "") {

htmltools :: tagList (

html (nicar $ komentāri [rādītājs])

)

}

}

)

Es pats nerakstīju šo daļu; reaģējamais radītājs Gregs Lins to uzrakstīja. Godīgi sakot, es nesaprotu, ko dara katra līnija. Bet tas darbojas!

Šarona Mačlisa

Vai es atcerēšos šo kodu nākamreiz, kad vēlēšos izveidot tabulu ar paplašināmām rindām? Nē. Noteikti nē. Bet, ja es izveidoju RStudio koda fragments, Es to nedaru ir lai to atcerētos. Tas vienmēr būs tikai pāris taustiņu attālumā.

Ja vispār neesat pazīstams ar RStudio koda fragmentiem, skatiet pilnu skaidrotāju koda fragmentos esošajā epizodē Do More With R. Bet šeit ir pamati.

Izveidojiet RStudio koda fragmentu

Zemāk ir manas tabulas koda attēls, kas izceļ manu datu rāmju un kolonnu nosaukumu mainīgos, kā arī maina kolonnu definīciju no dolāra zīmes apzīmējuma uz iekavu apzīmējumu (kas daudz labāk darbojas fragmentos). Arī - ļoti svarīgi - es pievienoju fragmenta virsrakstu un ievilku katru koda rindu ar sākuma cilni. Tas ir obligāti!

Sharon Machlis,

Tad man vienkārši jāmaina katra mainīgā nosaukums uz vispārīgu fragmenta mainīgais: 1 datu rāmim, 2 kolonnai, kuru vēlos parādīt kā HTML, un 3 - paplašināmās rindas kolonnai. Ievērojiet mainīgā sintaksi: $ {numurs: mainīgais_nosaukums}. Šie mainīgie man atvieglos faktisko mainīgo nosaukumu aizpildīšanu atpakaļ RStudio.

fragments my_expandable_row

html <- function (x, inline = FALSE) {

konteiners <- if (inline) htmltools :: span else htmltools :: div

konteiners (bīstamiSetInnerHTML = saraksts ("__ html" = x))

}

reaģējams ($ {1: mydf}, meklējams = TRUE, showSortable = TRUE,

kolonnas = saraksts (

$ {2: html_column} = colDef (html = TRUE, maināms lielums = TRUE),

$ {3: expand_col} = colDef (rādīt = FALSE)

),

detaļas = funkcija (rādītājs) {

ja ($ {1: mydf} [['$ {3: expand_col}']] [index]! = "") {

htmltools :: tagList (

html ($ {1: mydf} [['$ {3: expand_col}']] [rādītājs]

)

}

}

)

Jūs varat kopēt un ielīmēt iepriekšējo fragmenta kodu savā RStudio fragmentu failā, izmantojot

usethis :: edit_rstudio_snippets ()

lai atvērtu fragmentu failu RStudio. Pārliecinieties, ka fragmenta koda pēdiņas ir vienkāršas pēdiņas un vai katrā rindā ir ievilkta cilne (ne tikai atstarpes; katras koda rindas sākuma cilne ir obligāta).

Tagad, ja ierakstāt fragmenta nosaukumu RStudio source R skripta failā, tas jāpaplašina, lai iegūtu kodu. Pēc tam jūs varat ierakstīt pirmā mainīgā nosaukumu, nospiest cilni, ierakstīt otrā mainīgā nosaukumu utt. Apskatiet šajā rakstā iegulto videoklipu, lai uzzinātu, kā tas darbojas. Izbaudiet savas interaktīvās tabulas ar paplašināmām rindām!

Lai iegūtu vairāk R padomu, dodieties uz lapu Darīt vairāk ar R.

$config[zx-auto] not found$config[zx-overlay] not found