Interactive Tables
Table Paging
Show One Window
Paging shows a slice of rows while preserving the full table in memory.
Program
Play the script to change the page size and see the second-page window move.
table_paging.R
Replay: real traced execution (multi-file project)
rows <- paste0("row", 1:8)
page_size <- 3
start <- page_size + 1
end <- min(length(rows), page_size * 2)
visible <- rows[start:end]
label <- paste(visible, collapse = ",")
cat(label, "\n", sep = "")
rows <- paste0("row", 1:8)
page_size <- 2
start <- page_size + 1
end <- min(length(rows), page_size * 2)
visible <- rows[start:end]
label <- paste(visible, collapse = ",")
cat(label, "\n", sep = "")
rows <- paste0("row", 1:8)
page_size <- 4
start <- page_size + 1
end <- min(length(rows), page_size * 2)
visible <- rows[start:end]
label <- paste(visible, collapse = ",")
cat(label, "\n", sep = "")
rows ← row1, row2, row3, row4, row5, row6, row7, row8
1rows <- paste0("row", 1:8)2page_size <- 3values this steprow1, row2, row3, row4, row5, row6, row7, row8rowspage_size ← 3
1rows <- paste0("row", 1:8)2page_size <- 33start <- page_size + 1values this step3page_sizestart ← 4
2page_size <- 33start <- page_size + 14end <- min(length(rows), page_size * 2)values this step4start3page_sizeend ← 6
3start <- page_size + 14end <- min(length(rows), page_size * 2)5visible <- rows[start:end]values this step6end8 rowsrows3page_sizevisible ← row4, row5, row6
4end <- min(length(rows), page_size * 2)5visible <- rows[start:end]6label <- paste(visible, collapse = ",")values this steprow4, row5, row6visible4start6endlabel ← row4,row5,row6
5visible <- rows[start:end]6label <- paste(visible, collapse = ",")7cat(label, "\n", sep = "")values this steprow4,row5,row6label3 rowsvisiblecat(label, " ", sep = "")
6label <- paste(visible, collapse = ",")7cat(label, "\n", sep = "")outputrow4,row5,row6values this steprow4,row5,row6label
rows ← row1, row2, row3, row4, row5, row6, row7, row8
1rows <- paste0("row", 1:8)2page_size <- 2values this steprow1, row2, row3, row4, row5, row6, row7, row8rowspage_size ← 2
1rows <- paste0("row", 1:8)2page_size <- 23start <- page_size + 1values this step2page_sizestart ← 3
2page_size <- 23start <- page_size + 14end <- min(length(rows), page_size * 2)values this step3start2page_sizeend ← 4
3start <- page_size + 14end <- min(length(rows), page_size * 2)5visible <- rows[start:end]values this step4end8 rowsrows2page_sizevisible ← row3, row4
4end <- min(length(rows), page_size * 2)5visible <- rows[start:end]6label <- paste(visible, collapse = ",")values this steprow3, row4visible3start4endlabel ← row3,row4
5visible <- rows[start:end]6label <- paste(visible, collapse = ",")7cat(label, "\n", sep = "")values this steprow3,row4label2 rowsvisiblecat(label, " ", sep = "")
6label <- paste(visible, collapse = ",")7cat(label, "\n", sep = "")outputrow3,row4values this steprow3,row4label
rows ← row1, row2, row3, row4, row5, row6, row7, row8
1rows <- paste0("row", 1:8)2page_size <- 4values this steprow1, row2, row3, row4, row5, row6, row7, row8rowspage_size ← 4
1rows <- paste0("row", 1:8)2page_size <- 43start <- page_size + 1values this step4page_sizestart ← 5
2page_size <- 43start <- page_size + 14end <- min(length(rows), page_size * 2)values this step5start4page_sizeend ← 8
3start <- page_size + 14end <- min(length(rows), page_size * 2)5visible <- rows[start:end]values this step8end8 rowsrows4page_sizevisible ← row5, row6, row7, row8
4end <- min(length(rows), page_size * 2)5visible <- rows[start:end]6label <- paste(visible, collapse = ",")values this steprow5, row6, row7, row8visible5start8endlabel ← row5,row6,row7,row8
5visible <- rows[start:end]6label <- paste(visible, collapse = ",")7cat(label, "\n", sep = "")values this steprow5,row6,row7,row8label4 rowsvisiblecat(label, " ", sep = "")
6label <- paste(visible, collapse = ",")7cat(label, "\n", sep = "")outputrow5,row6,row7,row8values this steprow5,row6,row7,row8label
page size
`page_size` controls how many rows appear in one window.
window bounds
`start` and `end` identify the visible row positions.
slice
`rows[start:end]` selects only the current page.