Posit 入門繁中教材(Quarto+Positron)

把買了看不完的線上課程,一鍵變成能讀完的筆記。

4門課程24篇筆記一鍵自動整理
📘

Quarto 入門(30 分)

· 8 篇
🗺️ 本課地圖(點單元標題可跳到那一篇)
Quarto 是什麼?(What Is Quarto?)Quarto 把文字、程式碼與結果放在同一個純文字 .qmd 檔裡,「渲染(render)」時重新執行程式碼並產出網頁、PDF、Word、簡報等成品,是 R Markdown 的多語言接班者。
Quarto 文件的構造(Anatomy of a Quarto Document)每份 .qmd 都由三部分組成:YAML 標頭(整份文件的設定)、markdown 文字(變成排版後的內文)、程式碼格(渲染時執行、結果出現在輸出中)。
用 Markdown 寫作(Writing with Markdown)Markdown 用簡單符號格式化純文字,Quarto 文件的大部分內容都是 markdown:## 標題、粗體、斜體、反引號行內程式碼、清單(前面要空一行)、文字 連結與 !說明 圖片。
用 YAML 控制文件(Controlling Your Document with YAML)YAML 標頭是整份文件的控制面板:用 key: value 設定標題、作者、日期,用 format 選輸出格式(html、typst/pdf、docx、revealjs…),一份原始檔可同時產出多種格式;頂層選項套用到所有格式,縮排在某格式底下的選項只套用該格式。
加入程式碼格(Adding Code Cells)程式碼格以 ```{r} 或 ```{python} 開頭、渲染時執行並把結果放在下方;用以 #| 開頭的格選項(echo、eval、include、label、fig-cap)逐格控制輸出內容。
Callout、交叉參照與更多功能(Callouts, Cross-References, and More)Quarto 在 markdown 之上補了技術文件需要的功能:用 ::: {.callout-類型} 做提示框、用 fig-/tbl- 標籤加 @標籤 做自動編號的交叉參照、用 pipe 語法寫表格、用 ::: {.column-margin} 在 HTML 頁面邊欄放註解與公式。
在自己的電腦上使用 Quarto(Using Quarto on Your Own Computer)Positron 與 RStudio 都內建 Quarto;Preview 按鈕其實是在終端機執行 quarto preview 的捷徑,且在一個全新的 session 中跑整份文件,因此文件需要的套件與資料都必須寫在文件自己的格子裡,再用改 format 或 quarto render 產出 Word、PDF 等格式。
課程總複習(Course Wrap-Up)一份 Quarto 文件 = YAML 標頭 + markdown 文字 + 程式碼格,在 Positron 或終端機渲染成 HTML、PDF、Word、簡報等;本頁把全課語法濃縮成一頁速查表,並給出後續練習方向。

Quarto 是什麼?(What Is Quarto?)

Quarto 入門 · 第 1 單元 · 約 8 分
一句話總結

Quarto 把文字、程式碼與結果放在同一個純文字 .qmd 檔裡,「渲染(render)」時重新執行程式碼並產出網頁、PDF、Word、簡報等成品,是 R Markdown 的多語言接班者。

你會學到
  • Quarto 是什麼、解決什麼問題
  • 渲染如何把 .qmd 原始檔變成成品
  • 一份 Quarto 文件可以產出哪些種類的輸出
  • Quarto 與 R Markdown 的關係、以及為何要做它

內容筆記

文字、程式碼、結果放在同一處

多數資料工作的結尾,是把數字和圖從一個工具複製貼到另一個工具:跑完分析、把圖截圖貼進投影片或 Word、再手打一段解讀。資料一更新,一切重來,還得祈禱沒漏掉任何一個數字。Quarto 的解法是把寫作、程式碼、結果放進同一個檔案。

Quarto 是開源的出版系統,用「文字與程式碼混合的純文字檔」製作文件、簡報、網站等。每次建置(build)文件時程式碼都會重新執行,因此結果永遠與資料同步。

這種把「說明」與「程式碼」編織在一起的做法叫 literate programming(文學式編程):不是「程式碼加幾行註解」,而是寫成一份人可以由上讀到下的文件,程式碼與其輸出就放在該出現的位置。

它帶來三個好處(原文為三張翻卡,內容如下):

好處說明
Reproducible(可重現)結果來自執行程式碼,任何人重新建置文件都會得到相同數字
Always up to date(永遠最新)有新資料?重新建置,所有表格、圖、數字自動更新
Plain text(純文字)Quarto 檔是純文字,可搭配版本控制(如 git)與任何編輯器

從原始檔到成品

Quarto 文件寫在副檔名為 .qmd 的檔案中。.qmd 是原始檔(source):純文字,含 markdown 格式,通常還有一些程式碼。它本身不適合直接拿來分享,要把它渲染(render)成成品。

下面把同一份文件的「原始檔」和「渲染結果」並排給你看。原始檔 hello.qmd 共 17 行:

---
title: "Weekly Temperatures"
author: "Ana Lopez"
format: html
---

## Summary

This week was **warmer** than last week,
peaking on *Saturday*.

```{r}
#| echo: false
temps <- c(18, 21, 24, 19, 23, 26, 25)
plot(temps, type = "b", pch = 19,
     xlab = "Day", ylab = "Temperature (°C)")
```
hello.qmd 原始檔截圖:最上方是含 title、author、format: html 的 YAML 標頭,接著是 ## Summary 標題、含 **warmer** 與 *Saturday* 標記的句子,最後是一段 R 程式碼區塊(#| echo: false 並畫出一週氣溫折線圖)
hello.qmd 原始檔截圖:最上方是含 title、author、format: html 的 YAML 標頭,接著是 ## Summary 標題、含 warmer 與 Saturday 標記的句子,最後是一段 R 程式碼區塊(#| echo: false 並畫出一週氣溫折線圖)

渲染成 HTML 後:最上方是大標題「Weekly Temperatures」,其下是作者名,然後是「Summary」標題、套好粗體(warmer)與斜體(Saturday)的句子,最後是一張一週氣溫(18、21、24、19、23、26、25 °C)的折線圖,程式碼被隱藏(因為 echo: false)。

渲染後的網頁:大標題 Weekly Temperatures、作者 Ana Lopez、Summary 標題、套用粗體斜體的句子,以及第 1 到 7 天氣溫折線圖,程式碼未顯示
渲染後的網頁:大標題 Weekly Temperatures、作者 Ana Lopez、Summary 標題、套用粗體斜體的句子,以及第 1 到 7 天氣溫折線圖,程式碼未顯示

渲染時發生什麼事

渲染分幾個步驟,Quarto 全部代勞:

渲染流程圖:hello.qmd(文字加程式碼)→ 執行程式碼(R、Python 等)→ Markdown(文字加結果)→ 輸出(HTML、PDF、Word 等)
渲染流程圖:hello.qmd(文字加程式碼)→ 執行程式碼(R、Python 等)→ Markdown(文字加結果)→ 輸出(HTML、PDF、Word 等)
  1. Quarto 執行文件中每一個程式碼格(code cell),語言可以是 R、Python 或其他。
  2. 把結果(數字、表格、圖)放回程式碼原本所在位置的文字中。
  3. 把合併後的文字轉成你指定的格式:網頁、PDF、Word 等。
原始檔不會被改動

渲染會在原始檔旁邊產生一個新檔案,例如 hello.html,絕不會修改你的 .qmd。工作流程就是:編輯原始檔 → 渲染 → 看輸出 → 重複。

一份原始檔,多種格式

Quarto 最厲害之處:同一份 .qmd 可以變成截然不同的東西,只要改檔案最上方的一行就能切換。原文列出的輸出類型:

類型說明
HTML documents可在任何瀏覽器開啟的網頁,有分頁籤、可折疊程式碼、提示框等互動功能
PDF精緻、可列印的報告或論文,用 LaTeX 或 Typst 排版
WordMicrosoft Word 文件,適合同事要編輯、加註解時
Presentations簡報:reveal.js(HTML)、PowerPoint 或 Beamer,皆由同一份 markdown 產生
Websites and blogs把多份文件組成有導覽與搜尋的完整網站
Books多章節書籍,有交互參照,可發佈成 HTML、PDF 或 ePub
Dashboards把圖、表、數值排成一目了然的儀表板
支援多種語言

Quarto 可寫 R、Python、Julia 或 Observable JavaScript 的程式碼;若文件以文字為主,你甚至不需要會其中任何一種。

想看大家做了什麼,可瀏覽 Quarto Gallery。

從 R Markdown 轉過來?

若你用過 R,可能聽過 R Markdown:.Rmd 檔混合文字與 R 程式碼,可渲染成 HTML、PDF 或 Word。它已存在十年以上、仍被廣泛使用。本課不需要會它,但知道來龍去脈有幫助。

Quarto 是 R Markdown 的下一代,由同一個團隊 Posit 打造,把 R Markdown 累積的經驗重建成一個「不綁定 R」的系統。

面向R MarkdownQuarto
本質一個 R 套件,必須安裝 R獨立工具,不需要 R
語言主要是 RR、Python、Julia、Observable JavaScript
進階功能靠額外套件:bookdown 做書、blogdown 做網站、xaringan 做簡報書、網站、簡報、交互參照等都內建,語法一致
你的 R Markdown 成果不會浪費

Quarto 可以不修改直接渲染大多數 .Rmd 檔,而且很多語法相同。R Markdown 也不會消失,仍有維護,現有專案不必急著換。只是新功能都會出現在 Quarto。

關鍵詞

  • Quarto:開源出版系統,用混合文字與程式碼的純文字檔產出文件、簡報、網站等。
  • literate programming(文學式編程):把說明與程式碼編織成一份可由上讀到下的文件。
  • .qmd:Quarto 原始檔,純文字,含 markdown 與(常見的)程式碼。
  • render(渲染):執行程式碼並把 .qmd 轉成成品;產生新檔、不改原始檔。
  • R Markdown(.Rmd):Quarto 的前身,綁定 R 的套件。

可執行要點

📝 隨堂測驗(點選項作答)
你把 report.qmd 渲染成 HTML 之後,report.qmd 會怎樣?
渲染會在原始檔旁產生新檔案,絕不改動 .qmd 本身。
下列哪些是 Quarto 被做成 R Markdown 接班者的理由?(單選:最正確者)
Quarto 內建多種功能、不綁 R;它仍使用 markdown,且 R Markdown 仍在維護、多數 .Rmd 可直接渲染。
想把同一份報告改成可讓同事用 Word 編輯並加註解,最直接的做法是?
同一份 .qmd 只需改最上方的格式設定(format)就能切換輸出類型。

Quarto 文件的構造(Anatomy of a Quarto Document)

Quarto 入門 · 第 2 單元 · 約 6 分
一句話總結

每份 .qmd 都由三部分組成:YAML 標頭(整份文件的設定)、markdown 文字(變成排版後的內文)、程式碼格(渲染時執行、結果出現在輸出中)。

你會學到
  • 每份 Quarto 文件都有的三個部分
  • 每個部分在渲染後會變成什麼
  • 如何在本課使用的瀏覽器版 Quarto 模擬器中編輯並渲染(本筆記改寫成在你自己的 .qmd 動手試)

內容筆記

三個組成部分

每個 .qmd 檔都由同樣三種材料構成。下面是一份小而完整的 Quarto 文件,回報一週氣溫的平均:

---
title: "Weekly Temperatures"
format: html
---

## Summary

This week was **warmer** than last week.

```{python}
temps = [18, 21, 24, 19, 23]
sum(temps) / len(temps)
```

一開始符號看起來很多,但拆開來就是三塊,各有職責:

部分長相作用
YAML header(YAML 標頭)檔案最上方兩條 --- 線之間的區塊設定整份文件的選項,如標題與輸出格式
Markdown text(markdown 文字)一般文字加上 ##、** 等符號變成排版後的文字:標題、粗體、清單、連結
Code cells(程式碼格)以 ```{r} 或 ```{python} 開頭的區塊渲染時執行,結果顯示在輸出中
Code cells 與 code chunks

用過 R Markdown 的人熟悉的「code chunk(程式碼區塊)」,在 Quarto 叫 code cell,是同一個概念、新名稱。

動手試:第一次渲染

原課程提供瀏覽器內的 Quarto 模擬器(左側編輯器、右側預覽,不用安裝任何東西)。它使用 Quarto 自己的格式化引擎,所以預覽結果與真正的 Quarto 一致;但只能預覽 HTML、也讀不到你電腦裡的檔案。本筆記改成請你在自己的環境操作(第 7 單元會教如何在自己電腦上用 Quarto)。本例用 Python,但這一課不需要你寫任何程式。

動手試: 在你自己的 .qmd 輸入上面那份完整文件(模擬器載入的就是它,程式碼格內是 temps = [18, 21, 24, 19, 23] 與 sum(temps) / len(temps)),渲染後依序做三個修改,每改一次就重新渲染一次:

  1. 把 YAML 標頭的 title 改成別的,例如 "My First Quarto Document"。
  2. 把文字中的 warmer 改成 cooler。
  3. 改 temps 其中一個數字,例如把 24 改成 30。

預期結果: 標題改了、文字改了、而且改數字後平均值會自動更新。你會看到:YAML 的 title 變成頂端的大標題、markdown 變成排版文字、程式碼格同時顯示程式碼與其結果。這就是 Quarto 的核心觀念:結果永遠來自執行程式碼。

改亂了?

模擬器把你的編輯存在瀏覽器裡,按編輯器上方的 Reset 可還原成原本的文件。(在自己電腦上則可用版本控制或重新貼上原文。)

分辨哪個片段屬於哪一部分

接下來三個單元會逐一深入這三部分。先確認你分得清楚,下面是原課程的分類練習(原為拖曳,這裡直接給答案):

片段屬於
title: "Sales Report"YAML 標頭
format: htmlYAML 標頭
## Resultsmarkdown 文字
This week was warmer.markdown 文字
max(temps)程式碼格
sum(temps) / len(temps)程式碼格

判準:整份文件的選項放 YAML 標頭;你寫的文字是 markdown;需要執行的東西放程式碼格。

關鍵詞

  • YAML header:檔案最上方被兩條 --- 包住的設定區。
  • Markdown text:用簡單符號標記格式的內文。
  • Code cell:會在渲染時執行並顯示結果的程式碼區塊(R Markdown 稱 code chunk)。
  • Quarto simulator:原課程內建的瀏覽器版編輯與預覽環境,只預覽 HTML。

可執行要點

📝 隨堂測驗(點選項作答)
format: html 這一行應該放在哪一部分?
影響整份文件的選項(如標題、輸出格式)放在 YAML 標頭。
你把程式碼格中的 temps 某個數字改掉並重新渲染,輸出中的平均值會怎樣?
渲染時會重新執行程式碼,所以結果永遠與程式碼/資料同步。

用 Markdown 寫作(Writing with Markdown)

Quarto 入門 · 第 3 單元 · 約 10 分
一句話總結

Markdown 用簡單符號格式化純文字,Quarto 文件的大部分內容都是 markdown:## 標題、粗體、斜體、反引號行內程式碼、清單(前面要空一行)、文字 連結與 !說明 圖片。

你會學到
  • 什麼是 markdown、Quarto 為何使用它
  • 如何寫標題、粗體、斜體與行內程式碼
  • 如何做項目清單、編號清單、連結與圖片
  • 如何替圖片加上給螢幕閱讀器用的替代文字(fig-alt)

內容筆記

Markdown 速覽

Markdown 是用少數簡單符號為純文字加格式的方法。你輸入 bold,渲染後就顯示粗體的 bold。沒有按鈕、沒有選單,只有任何鍵盤都能打出的字元。它被設計成「還沒渲染也很好讀」,所以用純文字編輯器打開 markdown 檔仍然看得懂。

最常用語法一覽:

你輸入你得到
## Section title一個章節標題
boldbold(粗體)
italicitalic(斜體)
`code`code(行內程式碼)
- item項目清單的一項
1. item編號清單的一項
Quarto連結 Quarto
!Caption一張圖片

標題

一行以 # 開頭就是標題,# 的數量決定層級:## 是章節、### 是其下的小節,依此類推。

## Results

### By region
為什麼不用單一個 #?

YAML 標頭裡的 title 本身就是最頂層標題,所以多數 Quarto 文件的章節從 ## 開始。另外 # 後面要留一個空格:## Results 是標題,##Results 不是。

粗體、斜體與行內程式碼

  • 兩個星號 → 粗體
  • 一個星號 → 斜體
  • `反引號` → 行內程式碼,很適合標示檔名與函式名稱

動手試(markdown playground): 原課程的練習場會邊打邊即時更新預覽。請在你自己的 .qmd 輸入以下內容,改幾個字、加一個標題,看渲染結果:

---
title: "Markdown Playground"
---

## A heading

Some **bold** text, some *italic* text, and a file name like `report.qmd`.

### A smaller heading

Try making *this sentence* bold instead.

預期結果:## A heading 顯示為較大的章節標題、### A smaller heading 為較小的小節標題;「bold」粗體、「italic」斜體、report.qmd 以程式碼字型顯示。

清單

每行以 - 開頭是項目清單;以「數字加句點」開頭是編號清單:

- Flour
- Milk
- Eggs
1. Mix the batter
2. Heat the pan
3. Cook both sides
清單前要空一行

清單與上方的段落之間必須有一個空行。沒有的話,markdown 會把清單項目當成段落的一部分,全部擠成同一行。這是最常見的 markdown 錯誤,清單長得不對時先檢查這個。

連結與圖片

連結:中括號放要顯示的文字,後面緊接小括號放網址。圖片:同樣的寫法,前面加一個 !。當圖片單獨成一行時,中括號裡的文字會成為圖說(caption)。再用大括號加上 fig-alt 屬性,描述圖片給使用螢幕閱讀器的人:

Learn more on the [Quarto website](https://quarto.org).

![Daily highs for the week](temps.png){fig-alt="A line chart of daily high temperatures rising from 15 to 24 degrees over seven days."}

練習:幫食譜加格式

下面這份食譜文字都對、卻完全沒有格式(原課程在模擬器中,按 Render 才更新):

---
title: "Pancakes"
---

Ingredients

1 cup flour

1 cup milk

1 egg

Steps

Whisk everything together.

Cook on a hot pan for 2 minutes per side.

Serve warm.

Do not overmix the batter.

動手試: 把它貼進你自己的 .qmd,先渲染看看,再用 markdown 做四件事:

  1. 把 Ingredients 與 Steps 改成二級標題(## )。
  2. 三樣食材改成項目清單。
  3. 三個步驟改成編號清單。
  4. 把 Do not overmix the batter. 整句改成粗體。

提示:二級標題是兩個 # 加空格;每項食材以 - 開頭、步驟以 1.、2.、3. 開頭,且標題與清單之間要空一行;整句粗體是前後各包兩個星號。

參考答案:

---
title: "Pancakes"
---

## Ingredients

- 1 cup flour
- 1 cup milk
- 1 egg

## Steps

1. Whisk everything together.
2. Cook on a hot pan for 2 minutes per side.
3. Serve warm.

**Do not overmix the batter.**

小測:哪一行才是連結?

要把文字「the docs」連到 https://quarto.org,正確寫法是 the docs。!the docs 是圖片語法;(the docs)[https://quarto.org] 括號顛倒了。

關鍵詞

  • Markdown:用簡單符號為純文字加格式的語法。
  • fig-alt:圖片的替代文字屬性,給螢幕閱讀器使用者描述圖片。
  • 行內程式碼(inline code):用單一反引號包住、以程式碼字型顯示的文字。
  • caption(圖說):獨立成行的圖片,中括號中的文字會成為它的說明。

可執行要點

📝 隨堂測驗(點選項作答)
哪一行會把「the docs」這幾個字連到 https://quarto.org?
連結是 顯示文字;開頭加 ! 是圖片,括號順序顛倒則無效。
清單項目渲染後全擠成同一行,最可能的原因是?
清單與上方段落之間需要一個空行,否則會被當成段落的一部分。
為什麼多數 Quarto 文件的章節標題從 ## 而不是 # 開始?
文件 title 本身就扮演最上層標題,章節因此從 ## 開始。

用 YAML 控制文件(Controlling Your Document with YAML)

Quarto 入門 · 第 4 單元 · 約 15 分
一句話總結

YAML 標頭是整份文件的控制面板:用 key: value 設定標題、作者、日期,用 format 選輸出格式(html、typst/pdf、docx、revealjs…),一份原始檔可同時產出多種格式;頂層選項套用到所有格式,縮排在某格式底下的選項只套用該格式。

你會學到
  • YAML 選項如何運作,以及最容易出錯的語法規則
  • 如何設定文件的 title、author、date
  • 如何選擇輸出格式,以及一份文件如何同時產出多種格式
  • 如何找出並修正 YAML 標頭的錯誤

內容筆記

YAML 怎麼運作

標頭位於 .qmd 檔最上方,夾在兩行三個破折號(---)之間。裡面用 YAML 撰寫,這是一種簡單的設定格式。每一行是一組 key: value:選項名稱、冒號、一個空格、你要的值。

---
title: "Quarterly Sales Report"
subtitle: "Third quarter"
author: "Ana Lopez"
date: today
---
選項設定什麼
title文件頂端的大標題
subtitle標題下方較小的一行
author作者
date日期,或用 today 表示渲染當天
人人都會踩的三條 YAML 規則
  1. 冒號後要留一個空格。 author: Ana 可以;author:Ana 不行。
  2. 含冒號的文字要加引號。 title: "Sales: Q3" 可以;少了引號,YAML 會以為第二個冒號開啟了新選項。
  3. 縮排用空格,絕不用 Tab。 縮排表示哪些選項屬於另一個選項之內,所以必須一致;通常一層兩個空格。

選擇輸出格式

format 選項決定 Quarto 產出哪種檔案,文件其餘內容完全不變。下面是存成 report.qmd 的一份短報告(含標題、清單、表格與一段 Python 畫圖的程式碼格):

---
title: "Quarterly Sales Report"
author: "Ana Lopez"
format: html
---

## Highlights

Sales grew **12%** this quarter, led by the *West* region.

- Two new regions opened
- Returns fell to a record low
- Online orders passed in-store orders

## Sales by Region

| Region | Sales | Change |
|--------|------:|--------|
| North  |   120 | Up     |
| South  |    95 | Down   |
| West   |   143 | Up     |

## Monthly Trend

```{python}
#| echo: false
import matplotlib.pyplot as plt

plt.figure(figsize=(6, 3))
plt.plot(["Jul", "Aug", "Sep"], [102, 115, 128], marker="o")
plt.ylabel("Sales (thousands)")
plt.show()
```

只改 format 這一行再渲染,結果如下(原文為四個分頁籤,這裡全部展開):

format 設定產出檔說明
format: htmlreport.html可在任何瀏覽器開啟的網頁;未設定 format 時的預設值
format: typstreport.pdf用 Typst 排版的 PDF,可列印或當附件寄出
format: docxreport.docxMicrosoft Word 文件,同事可編輯與加註解
format: revealjsreport.htmlreveal.js 簡報,在瀏覽器中播放;標題與作者成為標題投影片,每個 ## 標題開啟一張新投影片

HTML 版:大標題、作者、帶底線的章節標題、項目清單、有樣式的表格,以及七至九月(Jul、Aug、Sep;銷售 102、115、128 千)的折線圖。

HTML 版報告:大標題 Quarterly Sales Report、作者 Ana Lopez、Highlights 條列、Sales by Region 表格(North 120 Up、South 95 Down、West 143 Up)與 Jul 到 Sep 銷售折線圖
HTML 版報告:大標題 Quarterly Sales Report、作者 Ana Lopez、Highlights 條列、Sales by Region 表格(North 120 Up、South 95 Down、West 143 Up)與 Jul 到 Sep 銷售折線圖

PDF(Typst)版:標題與作者置中、襯線字體、較緊湊的表格。

Typst 產出的 PDF 頁面:置中的襯線字體標題與作者、Highlights 條列、緊湊的 Sales by Region 表格與 Monthly Trend 折線圖
Typst 產出的 PDF 頁面:置中的襯線字體標題與作者、Highlights 條列、緊湊的 Sales by Region 表格與 Monthly Trend 折線圖

Word 版:標題與作者置中、藍色章節標題、簡單表格與折線圖。

Word 文件版本:置中標題與作者、藍色章節標題、條列、簡單表格與折線圖
Word 文件版本:置中標題與作者、藍色章節標題、條列、簡單表格與折線圖

Slides 版:標題投影片只顯示大字的「Quarterly Sales Report」與下方的「Ana Lopez」。

做 PDF 有兩種方式
  • format: typst:用 Typst(現代排版系統,隨 Quarto 附帶)。速度快、不用另外安裝任何東西,callout 等功能的外觀跟 HTML 很像。
  • format: pdf:用 LaTeX(歷史悠久的排版系統,需另外安裝)。

除非你已經在用 LaTeX,否則從 format: typst 開始。

模擬器只預覽 HTML

原課程的 Quarto 模擬器只預覽 HTML;設成其他格式時,它會顯示提示並改預覽 HTML。在你自己的電腦上 Quarto 會產出真正的 PDF、Word 或簡報檔(第 7 單元會教)。

小測:同事想用 Word 編輯並加註解你的報告,要渲染成哪個格式?答案是 format: docx。

格式選項:一份來源,多種格式

把多個格式列在 format 底下,各佔一行。default 代表「這個格式,不做任何更改」:

---
title: "Quarterly Sales Report"
format:
  html: default
  docx: default
---

渲染後,同一個檔案產出網頁和 Word 文件。選項可以在兩個層級設定。

所有格式共用的選項放在標頭最上層,與 title 並排。下例 number-sections: true 讓網頁與 Word 文件的標題都自動編號:

---
title: "Quarterly Sales Report"
number-sections: true
format:
  html: default
  docx: default
---

只給單一格式的選項,縮排放在該格式名稱底下。下例兩份檔案仍都有章節編號,但只有網頁會把程式碼折疊在一個 Code 按鈕後面;Word 文件無法折疊程式碼,因此 code-fold 是 HTML 專屬選項:

---
title: "Quarterly Sales Report"
number-sections: true
format:
  html:
    code-fold: true
  docx: default
---

注意縮排:code-fold 縮在 html: 之下,html: 又縮在 format: 之下,YAML 才知道它是 HTML 的選項。若同一個選項在兩個層級都設定,格式內層的那個優先(只對該格式生效)。

動手試: 在你自己的 .qmd 貼上下面這份使用簡寫 format: html 的文件:

---
title: "Quarterly Sales Report"
format: html
---

## Revenue

Revenue grew in every region.

```{python}
regions = {"North": 120, "South": 95, "West": 143}
sum(regions.values())
```

## Costs

Costs stayed flat.

把 format: html 改成帶選項的長寫法,並開啟 number-sections 與 code-fold:

format:
  html:
    number-sections: true
    code-fold: true

預期結果: 每個標題前出現編號,程式碼格被折疊在一個 Code 按鈕後面。

去哪裡找所有選項?

每個格式在 Quarto 官方參考文件都有完整選項列表:HTML、Typst、PDF(LaTeX)、Word。不需要全部學會,想改什麼再去查。

練習:修好壞掉的標頭

下面這個標頭有三個錯誤。原課程要你先渲染、讀錯誤訊息(模擬器會指出出問題的那一行),逐一修好直到文件能渲染且章節有編號:

---
title: Sales Report: Q3
author:Ana Lopez
format:
  html:
  number-sections: true
---

(原課程文件在標頭後有兩節:## Revenue「Revenue grew in every region.」與 ## Costs「Costs stayed flat.」。)

提示對應三條規則:

  1. title 含冒號 → 需要加引號包住。
  2. author:Ana Lopez → 冒號後要有空格。
  3. number-sections: true 的縮排要比 html: 更深,才算是 HTML 的選項。

參考答案:

---
title: "Sales Report: Q3"
author: Ana Lopez
format:
  html:
    number-sections: true
---

關鍵詞

  • YAML:簡單的設定語法,每行 key: value。
  • format:決定輸出格式的選項:html、typst、pdf、docx、revealjs 等。
  • default:html: default 表示該格式、不改任何設定。
  • Typst / LaTeX:兩種排版 PDF 的系統;Typst 隨 Quarto 附帶,LaTeX 需另裝。
  • reveal.js:在瀏覽器播放的簡報格式,## 標題開啟新投影片。
  • number-sections:自動幫標題編號。
  • code-fold:HTML 專屬選項,把程式碼折疊在 Code 按鈕後。

可執行要點

📝 隨堂測驗(點選項作答)
同事要在 Microsoft Word 編輯並加註解你的報告,應渲染哪個格式?
docx 產出 Word 文件;typst 產 PDF、revealjs 產簡報、html 產網頁。
下列哪個 title 寫法是正確的 YAML?
含冒號的文字要加引號,且冒號後要留空格。
code-fold: true 只縮排在 html: 底下,同時輸出 docx,結果是?
縮排在某格式下的選項只套用該格式;code-fold 本來也是 HTML 專屬選項。
想產生 PDF 且不想另外安裝任何東西,該用?
typst 隨 Quarto 附帶;format: pdf 用 LaTeX,需另外安裝。

加入程式碼格(Adding Code Cells)

Quarto 入門 · 第 5 單元 · 約 10 分
一句話總結

程式碼格以 ```{r} 或 ```{python} 開頭、渲染時執行並把結果放在下方;用以 #| 開頭的格選項(echo、eval、include、label、fig-cap)逐格控制輸出內容。

你會學到
  • 如何寫 R 或 Python 程式碼格
  • 文件渲染時程式碼格會發生什麼事
  • 如何用 echo、eval、label、fig-cap 等格選項控制輸出

內容筆記

程式碼格是什麼

程式碼格讓 Quarto 文件不只是排版文字。它以三個反引號加大括號內的語言名稱開頭,以三個反引號結尾。渲染時 Quarto 執行程式碼,把結果放在它的正下方。

R 版:

```{r}
temps <- c(18, 21, 24, 19, 23)
mean(temps)
```

輸出:

[1] 21

Python 版:

```{python}
temps = [18, 21, 24, 19, 23]
sum(temps) / len(temps)
```

輸出:

21.0
其他語言與多格混用

Quarto 也支援 Julia 與 Observable JavaScript,寫法相同:```{julia}、```{ojs}。一份文件可以有多個程式碼格,夾雜大量文字。格子由上到下依序執行,所以後面的格子可以使用前面格子建立的東西。

從 R Markdown 轉來?

Quarto 用 knitr(R Markdown 背後同一個引擎)執行 R 格,所以你的 R 程式碼(幾乎)運作得一模一樣。主要差別是格選項的位置:R Markdown 寫在格子標頭,如 ```{r, echo=FALSE};Quarto 寫在格子裡面以 #| 開頭的行。舊寫法仍可用,但 #| 寫法對 R 與 Python 都一樣。

格選項(cell options)

預設輸出會同時顯示程式碼與結果。這對教學很好,但給主管的報告大概只需要圖表。格選項讓你逐格控制。

格選項放在格子的最上方,每行以 #|(井字號加直線)開頭,語法與 YAML 標頭相同,都是 key: value:

```{python}
#| echo: false
plt.plot(temps)
```

最常用的選項:

選項作用
echo: false隱藏程式碼,但仍顯示結果
eval: false顯示程式碼,但不執行
include: false執行程式碼,但程式碼與結果都不顯示
label: fig-temps替格子取名,之後可在別處參照它的圖;圖的標籤以 fig- 開頭
fig-cap: "Daily temperatures"在該格的圖下方加圖說
整份文件設定一次

想隱藏每個格子的程式碼,不用每格重複寫,可在 YAML 標頭的 execute: 底下設定 echo: false:

execute:
  echo: false

動手試: 在你自己的 .qmd 貼上下面的文件(需要 Python 與 matplotlib),先渲染看到圖;再在格子第一行加 #| echo: false 重新渲染;然後改試 #| eval: false 看有什麼不同。

---
title: "Weekly Temperatures"
---

```{python}
import matplotlib.pyplot as plt

temps = [18, 21, 24, 19, 23, 26, 25]
plt.plot(range(1, 8), temps, marker="o")
plt.xlabel("Day")
plt.ylabel("Temperature (°C)")
plt.show()
```

預期結果: 預設顯示程式碼與折線圖;加 echo: false 後只剩圖;改 eval: false 後只剩程式碼、沒有圖(因為沒有執行)。

小測:報告要顯示圖表、但不要顯示畫圖的程式碼,該加哪個選項?答案是 #| echo: false(eval: false 是不執行;include: false 連結果都藏起來)。

練習:把報告修整到可分享

下面這份報告可以運作,但顯示了畫圖程式碼、圖也沒有圖說:

---
title: "Weekly Temperatures"
---

The average temperature this week was:

```{python}
temps = [18, 21, 24, 19, 23, 26, 25]
sum(temps) / len(temps)
```

```{python}
import matplotlib.pyplot as plt

plt.plot(range(1, 8), temps, marker="o")
plt.xlabel("Day")
plt.ylabel("Temperature (°C)")
plt.show()
```

動手試:

  1. 隱藏畫圖的程式碼,但保留圖。
  2. 把畫圖的格子標籤設為 fig-temps。
  3. 圖說設為 Daily temperatures。

三項都是第二個格子的格選項,各佔一行、以 #| 開頭、放在格子最上方;你需要 echo、label、fig-cap,圖說文字要加引號。

參考答案:

---
title: "Weekly Temperatures"
---

The average temperature this week was:

```{python}
temps = [18, 21, 24, 19, 23, 26, 25]
sum(temps) / len(temps)
```

```{python}
#| echo: false
#| label: fig-temps
#| fig-cap: "Daily temperatures"
import matplotlib.pyplot as plt

plt.plot(range(1, 8), temps, marker="o")
plt.xlabel("Day")
plt.ylabel("Temperature (°C)")
plt.show()
```

加碼:把結果放進句子裡(行內程式碼)

可以在句子中間執行一小段程式碼,稱為行內程式碼(inline code):寫一個反引號、大括號中的語言、程式碼、再一個反引號:

The average temperature was `{python} sum(temps) / len(temps)` degrees.

R 則改用 {r},例如 `{r} mean(temps)`。渲染時程式碼會被換成結果,所以句子永遠與資料一致。

關鍵詞

  • code cell(程式碼格):以 ```{語言} 開頭的可執行區塊。
  • cell option(格選項):放在格子最上方、以 #| 開頭的設定行。
  • echo / eval / include:分別控制是否顯示程式碼 / 是否執行 / 程式碼與結果是否都顯示。
  • label 與 fig-cap:替圖取名(fig- 開頭)與加圖說,讓圖變成有編號、有圖說的 Figure。
  • execute::YAML 標頭中為整份文件統一設定格選項的區塊。
  • inline code(行內程式碼):嵌在句子中、渲染後被結果取代的程式碼。

可執行要點

📝 隨堂測驗(點選項作答)
報告要顯示圖表,但不顯示畫圖的程式碼,應加哪個格選項?
echo: false 隱藏程式碼但保留結果;eval: false 不執行;include: false 連結果也隱藏。
#| eval: false 的效果是?
eval: false 讓程式碼只顯示、不執行,所以不會有輸出結果。
想讓某張圖成為有編號、有圖說的圖,並能被別處參照,需要哪些格選項?
label 提供名稱(圖以 fig- 開頭)、fig-cap 提供圖說。

Callout、交叉參照與更多功能(Callouts, Cross-References, and More)

Quarto 入門 · 第 6 單元 · 約 15 分
一句話總結

Quarto 在 markdown 之上補了技術文件需要的功能:用 ::: {.callout-類型} 做提示框、用 fig-/tbl- 標籤加 @標籤 做自動編號的交叉參照、用 pipe 語法寫表格、用 ::: {.column-margin} 在 HTML 頁面邊欄放註解與公式。

你會學到
  • 如何用 callout 突顯重要資訊
  • 如何用交叉參照以編號引用圖
  • 如何寫 markdown 表格、加圖說,並用 @tbl- 參照
  • 如何在 HTML 頁面的邊欄放註解與數學公式

內容筆記

Callout(提示框)

Markdown 處理基本需求,Quarto 補上技術文件需要的功能。你在本課程一路看到的彩色方框(note、tip、warning)就是 callout,用來吸引讀者注意不能錯過的內容。寫法是三個冒號、大括號中的 callout 類型、你的文字、再以三個冒號結尾:

::: {.callout-tip}
Render often. It's the fastest way to catch mistakes.
:::

Quarto 有五種 callout:note、tip、important、warning、caution,各有自己的顏色與圖示。要給 callout 標題,就在開頭放一個 ## 標題。

動手試: 在你自己的 .qmd 貼上下面這份文件,渲染後可看到五種 callout,再試著改類型或標題:

---
title: "Callout Types"
---

::: {.callout-note}
A **note** adds helpful background.
:::

::: {.callout-tip}
## Save time

A **tip** shares a better way to do something. This one has a custom title.
:::

::: {.callout-important}
**Important** information the reader needs.
:::

::: {.callout-warning}
A **warning** about a common mistake.
:::

::: {.callout-caution}
**Caution** before doing something risky.
:::

預期結果:五個不同顏色與圖示的方框;tip 那個顯示自訂標題「Save time」。

Fenced div(圍欄 div)

這個 ::: 語法叫 fenced div。callout 只是其中一種,之後許多 Quarto 功能都用相同的 ::: 樣式。

交叉參照(Cross-References)

長報告常寫「如圖 3 所示」。若在前面多加一張圖,後面每個編號都會變,你得手動全部修改。交叉參照幫你自動編號。分兩步:

  1. 替圖加標籤。 程式碼產生的圖,加格選項如 #| label: fig-temps。圖的標籤一定以 fig- 開頭。
  2. 參照它。 在文字任何地方輸入 @ 加標籤,如 @fig-temps。
@fig-temps shows the temperature rising through the week.

```{r}
#| label: fig-temps
#| fig-cap: "Daily temperatures"
plot(temps, type = "b")
```

參照可以放在圖之前或之後,因為 Quarto 在渲染時才把它們配對。渲染後,@fig-temps 會變成一個顯示 Figure 1 的連結,圖說則顯示 Figure 1: Daily temperatures。在它上面再加一張圖,兩處編號都會自動更新。

動手試: 貼入下面文件並渲染,確認 @fig-temps 變成「Figure 1」連結、且與圖下方圖說的編號一致:

---
title: "Weekly Temperatures"
---

@fig-temps shows the temperature rising through the week.

```{r}
#| label: fig-temps
#| fig-cap: "Daily temperatures"
#| echo: false
temps <- c(18, 21, 24, 19, 23, 26, 25)
plot(temps, type = "b", xlab = "Day", ylab = "Temperature (°C)")
```
不只圖

同樣概念適用於表格(標籤以 tbl- 開頭)、章節(sec-)、公式(eq-)等。圖片也能成為 figure:在圖片後面的大括號加標籤,如 !Our logo{#fig-logo}。

小測:圖的格選項是 #| label: fig-sales,在文字中要怎麼參照?答案是 @fig-sales(不是 Figure 1,也不是 {#fig-sales},更不是手打 Figure 1)。

表格與表格交叉參照

幾乎每份報告都需要表格。Markdown 的寫法:欄位之間用 |(直線),標題列下方放一列破折號:

| Region | Sales |
|--------|------:|
| North  |   120 |
| South  |    95 |
| West   |   143 |

: Sales by region {#tbl-sales}

重點細節:

  • 破折號列分隔標題與資料。破折號右側加冒號(------:)表示該欄靠右對齊,適合數字。
  • 欄位不必對齊得很整齊:Quarto 只看 |,排整齊只是讓原始碼好讀。
  • 表格下方以 : 開頭的那一行是圖說(caption)。加上 {#tbl-sales} 就給表格一個標籤,之後可用 @tbl-sales 參照,跟圖一樣。

動手試: 貼入下面文件(原課程此練習場會即時更新),為 East 區新增一列,或把別的欄位改成靠右:

---
title: "Quarterly Sales"
---

@tbl-sales shows sales for each region.

| Region | Sales | Change |
|--------|------:|--------|
| North  |   120 | Up     |
| South  |    95 | Down   |
| West   |   143 | Up     |

: Sales by region {#tbl-sales}
程式碼產生的表格

表格也可以來自程式碼,例如 R 或 Python 的 data frame。給該格 #| label: tbl-... 與 #| tbl-cap: "..." 選項,Quarto 會像 markdown 表格一樣為它編號與加圖說。

邊欄內容(Margin Content)

Quarto 的 HTML 頁面右側有寬闊的邊欄,可放旁註、小圖或某個數字背後的公式。這讓主文維持好讀、細節又近在手邊。把內容包在 ::: {.column-margin} 裡,Quarto 就會把它放在上方那段文字旁邊的邊欄:

The average temperature this week was 22.3 °C, up from
20.1 °C the week before.

::: {.column-margin}
The average of $n$ readings:

$$
\bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i
$$
:::

渲染後的頁面如下:主文欄正常顯示兩段關於本週平均氣溫的文字,右側邊欄則是一則灰色小字「The average of n readings:」,下面是平均數公式(x 上有橫線,等於 n 分之一乘以 x_i 從 i=1 到 n 的總和)。

Quarto 網頁:主文欄是兩段關於本週平均氣溫的文字,右側邊欄是灰色小字 The average of n readings 與平均數公式
Quarto 網頁:主文欄是兩段關於本週平均氣溫的文字,右側邊欄是灰色小字 The average of n readings 與平均數公式

這裡用到 Quarto 的數學語法:在錢字號之間寫 LaTeX 記號。兩側各一個 $(如 $n$)把數學放在句子內;兩側各兩個 $$(如上面的 $$ 行)讓公式獨立成行。公式不只能放邊欄,在文件任何地方、任何格式都能用。

更多版面選項

邊欄只是 Quarto「文章版面(article layout)」的一部分。你也可以把圖說放邊欄,或讓寬表格、寬圖延伸到整個頁面寬度。準備好時看官網 Article Layout。原課程的模擬器不顯示邊欄,請在自己的電腦上試。

小測:想讓公式放在使用它的那段文字旁邊的邊欄,要用 ::: {.column-margin} 包住(不是公式後加 {#margin},也不是 ::: {.callout-note})。

大括號 {} 裡能放什麼

你已經看過 {} 內能放的三種東西:ID(如 #tbl-sales)、class(如 .column-margin)、屬性(如 fig-alt="...")。同時用多種時,順序是:先 ID、再 class、最後屬性。

練習:加 callout 與交叉參照

下面這份報告需要兩個收尾:

---
title: "Weekly Temperatures"
---

The chart below shows the temperature rising through the week.

Readings from Sunday are estimates.

```{r}
#| label: fig-temps
#| fig-cap: "Daily temperatures"
#| echo: false
temps <- c(18, 21, 24, 19, 23, 26, 25)
plot(temps, type = "b", xlab = "Day", ylab = "Temperature (°C)")
```

動手試:

  1. 把 The chart below 這幾個字換成對圖的交叉參照(格子已標為 fig-temps)。
  2. 把句子 Readings from Sunday are estimates. 放進 warning callout。

提示:交叉參照是 @ 加標籤,即 @fig-temps;warning callout 以單獨一行的 ::: {.callout-warning} 開頭、以單獨一行的 ::: 結尾,句子放中間。

參考答案:

---
title: "Weekly Temperatures"
---

@fig-temps shows the temperature rising through the week.

::: {.callout-warning}
Readings from Sunday are estimates.
:::

```{r}
#| label: fig-temps
#| fig-cap: "Daily temperatures"
#| echo: false
temps <- c(18, 21, 24, 19, 23, 26, 25)
plot(temps, type = "b", xlab = "Day", ylab = "Temperature (°C)")
```

關鍵詞

  • callout:彩色提示框;類型 note、tip、important、warning、caution。
  • fenced div:以 ::: 包住內容的語法,callout 與邊欄都屬於這一類。
  • cross-reference(交叉參照):用 @標籤 引用圖、表等,由 Quarto 自動編號。
  • 標籤前綴:fig- 圖、tbl- 表、sec- 章節、eq- 公式。
  • .column-margin:把內容放進 HTML 頁面右側邊欄的 class。
  • $ / $$:行內數學/獨立成行的公式(LaTeX 記號)。

可執行要點

📝 隨堂測驗(點選項作答)
圖的格子有 #| label: fig-sales,文字中要怎麼參照它?
交叉參照就是 @ 加標籤;手寫 Figure 1 不會自動更新編號。
想讓一個公式出現在使用它的段落旁邊的邊欄,要用什麼包住它?
.column-margin 這個 fenced div 會把內容放在 HTML 頁面右側邊欄。
markdown 表格破折號列中的 ------: 結尾冒號表示什麼?
冒號在破折號右側表示靠右對齊,適合數字欄。
表格要能被 @tbl-sales 參照,需要在表格下方做什麼?
以 : 開頭的行是圖說,大括號內的 #tbl-sales 就是標籤。

在自己的電腦上使用 Quarto(Using Quarto on Your Own Computer)

Quarto 入門 · 第 7 單元 · 約 15 分
一句話總結

Positron 與 RStudio 都內建 Quarto;Preview 按鈕其實是在終端機執行 quarto preview 的捷徑,且在一個全新的 session 中跑整份文件,因此文件需要的套件與資料都必須寫在文件自己的格子裡,再用改 format 或 quarto render 產出 Word、PDF 等格式。

你會學到
  • 如何在自己的電腦取得 Quarto
  • 如何在 Positron 建立並預覽 Quarto 文件
  • Preview 背後執行了什麼,以及 quarto preview、quarto render 指令
  • 為什麼在 Console 跑得動的程式碼,預覽時卻可能失敗
  • 如何渲染成 Word、PDF 等其他格式
想跟著做?

如果要在自己電腦上練習、還沒有 Positron,可從 positron.posit.co/download.html 免費下載。

內容筆記

取得 Quarto

你在模擬器裡練過的一切,在自己電腦上做法相同。Quarto 是一個負責渲染文件的命令列程式。最簡單的取得方式,是用已內建它的編輯器,所以不必另外安裝:

編輯器說明
Positron內建 Quarto,並附 Quarto 擴充功能:Preview 按鈕、語法上色、YAML 選項建議
RStudio也內建 Quarto,編輯器工具列有 Render 按鈕
其他編輯器從 quarto.org 下載 Quarto;若編輯器有 Quarto 擴充(如 VS Code)再安裝擴充

本課以 Positron 示範。若要讓 R 或 Python 程式碼格能執行,還需要安裝 R 或 Python,以及 R 的 rmarkdown 套件或 Python 的 jupyter 套件。只有文字與 markdown 的文件則不需要其他東西。

建立並預覽文件

建立文件並預覽只要幾次點擊。原課程是點擊截圖的互動模擬,這裡依序展開四步:

步驟 1:開新檔案。 點 Positron 左上角的 New 按鈕(旁邊是 Open 按鈕;此時 Console 是空的 Python 控制台)。

步驟 2: 打開的 New 選單有 New File、New Folder from Template、New Folder from Git、New Window 等項目,點 New File...。

步驟 3:選檔案類型。 Positron 問你要哪種檔案,清單有 Text File、R File、Python File、Jupyter Notebook、Quarto Document、Quarto Project,選 Quarto Document。

New File 選單:列出 Text File、R File、Python File、Jupyter Notebook、Quarto Document、Quarto Project 六種類型
New File 選單:列出 Text File、R File、Python File、Jupyter Notebook、Quarto Document、Quarto Project 六種類型

步驟 4:預覽。 文件在編輯器中開啟後,點編輯器左上方的 Preview。

你的新文件會更空

在 Positron 建立 Quarto 文件時,一開始只有 YAML 標頭:一個 title 與 format: html。原課程模擬中的文件另外加了標題、文字與一個程式碼格,讓預覽有東西可看。

模擬中的文件內容如下(在你自己的 Positron 貼上或自行加入也行):

---
title: "My First Document"
format: html
---

## Hello, Quarto

This document mixes text and code. When you preview it, Quarto
runs the code and shows the result right below it.

```{python}
total = 2 + 3
print(f"The total is {total}")
```
Positron 編輯器中的新 Quarto 文件:YAML 標頭(title: My First Document、format: html)、## Hello, Quarto 標題、一句說明文字、Python 程式碼格 total = 2 + 3,編輯器上方有 Preview 按鈕與 Render on Save 核取方塊
Positron 編輯器中的新 Quarto 文件:YAML 標頭(title: My First Document、format: html)、## Hello, Quarto 標題、一句說明文字、Python 程式碼格 total = 2 + 3,編輯器上方有 Preview 按鈕與 Render on Save 核取方塊

完成後的結果: Positron 渲染文件,並把結果顯示在 Viewer 窗格,緊鄰你的原始檔。程式碼已執行,輸出出現在程式碼下方(內容為「The total is 5」)。你修改原始檔再按 Preview,Viewer 就會更新。

Positron 預覽結果:一側是 first-qmd.qmd 原始碼,另一側的 Viewer 窗格顯示渲染後的標題 My First Document、Hello, Quarto、程式碼與輸出 The total is 5,下方 Terminal 顯示 quarto preview 指令
Positron 預覽結果:一側是 first-qmd.qmd 原始碼,另一側的 Viewer 窗格顯示渲染後的標題 My First Document、Hello, Quarto、程式碼與輸出 The total is 5,下方 Terminal 顯示 quarto preview 指令
用鍵盤預覽

在 Positron 按 Ctrl/Cmd + Shift + K 即可預覽,不必動滑鼠。先把文件存成 .qmd,輸出檔才有地方放。

試試更有趣的文件

想預覽更豐富的內容?把下面其中一份複製進新的 Quarto 文件,存成 temps.qmd,按 Preview。它用到 callout、交叉參照與程式碼格畫的圖,都是本課練習過的東西。

R 版(需要 rmarkdown 套件):

---
title: "Weekly Temperatures"
format: html
---

## Summary

The daily highs for the week are in @fig-temps. The warmest reading was **26 °C**.

::: {.callout-note}
Readings from Sunday are estimates.
:::

```{r}
#| label: fig-temps
#| fig-cap: "Daily high temperatures"
#| echo: false
temps <- c(18, 21, 24, 19, 23, 26, 25)
plot(temps, type = "b", xlab = "Day", ylab = "Temperature (°C)")
```

Python 版(需要 jupyter 與 matplotlib 套件):

---
title: "Weekly Temperatures"
format: html
---

## Summary

The daily highs for the week are in @fig-temps. The warmest reading was **26 °C**.

::: {.callout-note}
Readings from Sunday are estimates.
:::

```{python}
#| label: fig-temps
#| fig-cap: "Daily high temperatures"
#| echo: false
import matplotlib.pyplot as plt

temps = [18, 21, 24, 19, 23, 26, 25]
plt.plot(range(1, 8), temps, marker="o")
plt.xlabel("Day")
plt.ylabel("Temperature (°C)")
plt.show()
```

日常工作流程的正確順序(原課程為排序題):

  1. 建立新的 Quarto 文件並存成 .qmd
  2. 寫文字與程式碼
  3. 按 Preview
  4. 在 Viewer 窗格檢查結果

從終端機使用 Quarto

回頭看剛才模擬的最後一個畫面:當你按 Preview,Positron 會在底部打開 Terminal 分頁並執行類似下面的指令:

quarto preview first-qmd.qmd --no-browser --no-watch-inputs

Preview 按鈕其實就是 quarto preview 指令的捷徑,外加兩個選項:

  • --no-browser:讓結果顯示在 Positron 的 Viewer 窗格,而不是開啟網頁瀏覽器。
  • --no-watch-inputs:不要每次存檔就重新渲染,Viewer 只在你再按 Preview 時才更新。如果你希望每次存檔都更新,勾選 Preview 旁的 Render on Save。

你也可以在任何終端機自己輸入 Quarto 指令,搭配任何編輯器都能用:

# Render and open a live preview that updates when you save
quarto preview report.qmd

# Render to the format(s) in the YAML header
quarto render report.qmd

# Render to a specific format
quarto render report.qmd --to docx
是 Terminal,不是 Console

Quarto 指令要在 Terminal(終端機)輸入,不是 R 或 Python 的 Console。Console 只懂 R 或 Python 程式碼,在那裡打 quarto render 會報錯。在 Positron,Terminal 是底部面板的一個分頁,就在 Console 旁邊。

preview 與 render 的分工

quarto preview 用於寫作:它持續執行,你自己在終端機輸入時,每次存檔都會刷新輸出。quarto render 用於完稿:產出最終檔案後就結束。

Run Cell 與 Preview 的差別

在 Positron,每個程式碼格上方都有 Run Cell 連結,寫作時很方便:不必等整份文件,可以一次試一個格子。但 Run Cell 與 Preview 在不同的地方執行你的程式碼,彼此不共用結果。Run Cell 把程式碼送到 Console;Preview 則在 Terminal 執行 quarto preview,那是另一個獨立程式、會開啟自己的 session。

Run CellPreview
程式碼在哪裡執行Console,也就是你的互動式 session全新的 session,與 Console 分開
執行什麼只有那個格子每個格子,由上到下依序
能用到什麼你到目前為止在 Console 建立的任何東西只有文件本身建立的東西

這造成一個經典的意外。假設你在 Console 探索,並在那裡載入資料:

import pandas as pd
sales = pd.read_csv("sales.csv")

文件中有一個格子是 sales.head()。你按 Run Cell 成功了,因為 sales 存在於 Console。然後你按 Preview,卻失敗並出現 NameError: name 'sales' is not defined。因為 Preview 的全新 session 從沒看過你的 Console,所以那裡沒有 sales。R 也一樣,錯誤訊息類似 object 'sales' not found。

一切都放在文件裡

文件用到的每個套件、每份載入的資料,都必須寫在文件的某個格子裡,且位置在使用它們的格子之前。Preview 才是真正的考驗:它能跑,別人渲染你的文件也就能跑。

小測:Run Cell 成功、Preview 卻說 model 沒定義,最可能的原因是你在 Console 建立了 model,但文件中沒有任何格子建立它(不是沒存檔,也不是 Preview 不能跑程式碼格)。

渲染成其他格式

在自己的電腦上,Quarto 能產出所有格式,不只 HTML。要切換,就像在模擬器那樣,改 YAML 標頭的 format:

---
title: "Quarterly Sales Report"
format: docx
---

預覽後,Quarto 會在 .qmd 旁邊寫出 report.docx。HTML 與 PDF 的預覽在 Viewer 窗格開啟;Word 這類格式則在它自己的應用程式中開啟。

若文件在 format 下列了多個格式,Preview 只會顯示第一個。Positron 有兩個命令處理其他格式。用 Ctrl/Cmd + Shift + P 打開 Command Palette(命令面板)執行:

命令作用
Quarto: Preview Format…選一個格式預覽,如 PDF 或 Word
Quarto: Render Document一次渲染文件中的所有格式

和 Preview 一樣,它們會替你在 Terminal 執行 Quarto;例如 Quarto: Render Document 執行的就是 quarto render。

做 PDF

要 PDF 就用 format: typst。Typst 隨 Quarto 附帶,不必安裝其他東西,PDF 也會像 HTML 預覽一樣在 Viewer 窗格打開。

小測:文件在 format 下同時列了 html 與 docx,按 Preview 只得到 HTML,要怎麼同時拿到 Word 檔?從 Command Palette 執行 Quarto: Render Document(再按一次 Preview 或把檔案存成 .docx 副檔名都沒有用)。

關鍵詞

  • Positron:Posit 的編輯器,內建 Quarto 與 Quarto 擴充功能。
  • Preview:按鈕,等於在 Terminal 執行 quarto preview(加 --no-browser --no-watch-inputs)。
  • Viewer 窗格:Positron 中顯示預覽結果的區域。
  • quarto preview:寫作用,持續執行並在存檔時刷新。
  • quarto render:完稿用,產出最終檔後結束;可加 --to docx 指定格式。
  • Terminal vs Console:Quarto 指令只能在 Terminal;Console 只懂 R/Python。
  • Run Cell:把單一格子送到 Console 執行;與 Preview 的 session 不共用。
  • Command Palette:Ctrl/Cmd + Shift + P,執行 Quarto: Preview Format… 或 Quarto: Render Document。

可執行要點

📝 隨堂測驗(點選項作答)
Quarto 指令(如 quarto render)應該輸入在哪裡?
Console 只懂 R/Python 程式碼,輸入 quarto render 會出錯;要在 Terminal。
Run Cell 成功、按 Preview 卻說 model 沒定義,最可能的原因?
Preview 在全新 session 從頭執行整份文件,不會用到 Console 裡的東西。
文件的 format 下列了 html 與 docx,按 Preview 只出現 HTML,要同時產出 Word 檔該怎麼做?
Preview 只顯示第一個格式;Quarto: Render Document 會渲染所有格式(等同 quarto render)。
quarto preview 與 quarto render 的分工是?
preview 持續執行並在存檔時刷新;render 產出最終檔案後就停止。

課程總複習(Course Wrap-Up)

Quarto 入門 · 第 8 單元 · 約 8 分
一句話總結

一份 Quarto 文件 = YAML 標頭 + markdown 文字 + 程式碼格,在 Positron 或終端機渲染成 HTML、PDF、Word、簡報等;本頁把全課語法濃縮成一頁速查表,並給出後續練習方向。

你會學到
  • 全課重點回顧(單元 1–7)
  • 一頁式 Quarto 語法速查:YAML、Markdown、程式碼格、Quarto 功能、渲染方式
  • 用自己的 .qmd 做綜合練習,以及下一步該做什麼

內容筆記

你學過的內容

  • Quarto 是什麼、渲染如何把 .qmd 變成成品,以及它如何從 R Markdown 發展而來
  • Quarto 文件的三個部分:YAML 標頭、markdown 文字、程式碼格
  • 如何用 markdown 排版文字,並用 YAML 選項與輸出格式控制文件
  • 如何加入 R 與 Python 程式碼格,並用格選項控制輸出
  • 如何使用 callout、交叉參照、表格與邊欄內容
  • 如何在 Positron 與終端機中建立、預覽與渲染文件

更深入或本課未涵蓋的功能,請查 Quarto 官方文件。

Quarto 速查表

YAML 標頭(單元 4)

---
title: "Report Title"
author: "Your Name"
date: today
format:
  html:
    number-sections: true
  docx: default
execute:
  echo: false
---

Markdown(單元 3)

## Section heading

**bold**, *italic*, `code`

- Bulleted item
1. Numbered item

[Link text](https://quarto.org)
![Caption](image.png){fig-alt="Description for screen readers"}

程式碼格(單元 5)

```{r}
#| label: fig-sales
#| fig-cap: "Monthly sales"
#| echo: false
plot(sales)
```
選項效果
echo: false隱藏程式碼,顯示結果
eval: false顯示程式碼,不執行
include: false執行程式碼,什麼都不顯示

Quarto 功能(單元 6)

::: {.callout-tip}
A callout: note, tip, important, warning, or caution.
:::

@fig-sales shows the trend.

| Region | Sales |
|--------|------:|
| North  |   120 |

: Sales by region {#tbl-sales}

渲染方式(單元 7)

在哪裡怎麼做
PositronPreview 按鈕,或 Ctrl/Cmd + Shift + K
Positron,所有格式Command Palette 的 Quarto: Render Document
Terminalquarto preview file.qmd 或 quarto render file.qmd --to docx
PDFformat: typst,不必另外安裝任何東西

綜合練習(Keep Practising)

原課程最後提供一個自由練習場。請你在自己的 .qmd 貼上下面的起點,試著把學過的全部組合起來:一個標題、幾個編號章節、一個 callout、以及一張有圖說並用交叉參照引用的圖。

---
title: "My Quarto Document"
author: "Your Name"
format:
  html:
    number-sections: true
---

## Introduction

Write something here.

預期結果:渲染後章節標題自動編號;你加入的 callout 以彩色方框顯示;@fig-xxx 變成「Figure 1」連結,圖下方有「Figure 1: 圖說」。

下一步(Next Steps)

  • 動手做真的: 打開 Positron,建立 Quarto 文件,寫下你現在正在處理的東西
  • 讀官方指南: Quarto Guide 更深入地涵蓋本課每項功能,還有更多
  • 找靈感: Quarto Gallery 有文件、簡報、網站、書籍、儀表板的範例與原始碼
  • 試新格式: 把 format: html 改成 revealjs,把文件變成投影片

關鍵詞

  • .qmd:Quarto 原始檔。
  • YAML 標頭:--- 之間的 key: value 設定。
  • 程式碼格/格選項:```{r} 區塊與 #| 設定行。
  • callout / 交叉參照 / 邊欄:::: {.callout-}、@fig-/@tbl-*、::: {.column-margin}。
  • render / preview:完稿 vs 寫作時的預覽。

可執行要點

📝 隨堂測驗(點選項作答)
下列哪一項屬於 Quarto 文件的三個組成部分之一?
三部分是 YAML 標頭、markdown 文字、程式碼格;Console 與 Viewer 屬於編輯器環境。
想隱藏程式碼但顯示結果、且只針對單一格子,要用?
echo: false 寫在格內(以 #| 開頭)可逐格控制;寫在 execute: 下則是整份文件。
要把文件變成簡報,最簡單的做法?
只要改 format(如 revealjs),同一份原始檔就能產生簡報。
📗

Positron 入門①介面導覽(28 分)

· 6 篇
🗺️ 本課地圖(點單元標題可跳到那一篇)
Positron 是什麼?(What is Positron?)Positron 是 Posit 新一代的資料科學 IDE:同一個環境原生支援 Python 與 R,建立在與 VS Code 相同的開源核心(Code OSS)上,同時把 RStudio 熟悉的 Console、Plots、Variables 等資料科學工具內建進來。
Positron 的介面配置(The Positron Layout)Positron 視窗可分成四個區域——Manage(管理)、Write(撰寫)、Run(執行)、Understand(理解)——對應「管理專案 → 寫程式 → 執行 → 看結果」的工作流程,而最值得先學的捷徑是 Command Palette(Cmd/Ctrl+Shift+P)。
核心面板與區域(Core Panes & Areas)Activity bar 決定左側 side bar 顯示什麼;編輯器是「寫」、Console 是「跑」(Cmd/Ctrl+Enter 把程式送進 Console);右側面板用 Session(Variables+Plots)、Help、History、Viewer 四個分頁收納資料科學工具。
Extensions、主題與快捷鍵(Extensions, Themes & Shortcuts)Extensions 從 Extensions 檢視安裝(預設來源是 P3M),主題與設定幾乎都能透過 Command Palette 達成;從 RStudio 轉來的人只要打開 workbench.keybindings.rstudioKeybindings 並重啟,就能沿用熟悉的快捷鍵,版面亂了也能一鍵重置。
Interpreter 選擇與 Sessions(Interpreter Selection & Sessions)Interpreter 是執行程式的語言與版本,session 是它的一個執行實例,並在你重啟之前一直保存變數、已載入套件與歷史;重啟可得乾淨起點(但會清空記憶體),而 Positron 可同時開多個 session,Python 與 R 並行。
課程總複習(Course Recap)這門課教你在 Positron 裡「找得到東西」:它是 Python 與 R 並行的資料科學 IDE,視窗分成 Manage/Write/Run/Understand 四區,並能用 extensions、主題、快捷鍵、版面與多個 session 調成自己的工作方式。

Positron 是什麼?(What is Positron?)

Positron 入門①介面導覽 · 第 1 單元
一句話總結

Positron 是 Posit 新一代的資料科學 IDE:同一個環境原生支援 Python 與 R,建立在與 VS Code 相同的開源核心(Code OSS)上,同時把 RStudio 熟悉的 Console、Plots、Variables 等資料科學工具內建進來。

你會學到
  • Positron 是什麼、適合誰用
  • Positron 背後的設計理念(四個關鍵字)
  • Positron 與 RStudio、VS Code 的關係與差異
想邊讀邊操作?

還沒安裝 Positron 的話,可以到 https://positron.posit.co/download.html 免費下載。

內容筆記

Positron 是什麼

Positron 是 Posit 的「次世代」資料科學 IDE:單一、多語言(polyglot)的環境,同時處理 Python 與 R,並建立在開源基礎之上。

用過 RStudio 的人會覺得大部分地方很熟悉:Console(主控台)、Plots(圖表)、Variables(變數)、資料檢視,都在預期的位置。差別在於 Positron 把 Python 與 R 視為「平等公民」,並且採用與 VS Code 同一套開源基礎,因此彈性大、能隨你的需求成長。

Positron 的 Welcome 畫面:最左是活動列與 Explorer 側邊欄(尚未開啟資料夾),中間是 Welcome 分頁(Open Folder、New Folder、New from Git 等入口),下方是已啟動 R 4.5.3 的 Console,最右是 Session 分頁中的 Variables 與 Plots 區塊
Positron 的 Welcome 畫面:最左是活動列與 Explorer 側邊欄(尚未開啟資料夾),中間是 Welcome 分頁(Open Folder、New Folder、New from Git 等入口),下方是已啟動 R 4.5.3 的 Console,最右是 Session 分頁中的 Variables 與 Plots 區塊

這張是剛開啟 Positron 時的畫面:最左是 Explorer,中間是 Welcome 分頁與下方的 Console,最右是 Variables 與 Plots 區。

設計理念:四個關鍵字

關鍵字意思
Polyglot(多語言)Python 與 R 都是一等公民,換語言不必換工具
Open foundation(開源基礎)建立在 Code OSS(VS Code 的開源核心)上,可擴充且介面熟悉
Data science first(資料科學優先)Plots、Variables 與資料工具是內建的,不是後來外掛硬湊的
Flexible(彈性)可重新排列面板、加裝 extensions,把工作區塑造成自己慣用的樣子
補充說明

「Polyglot」只是指 Positron 會說不只一種語言。你可以同時開著一個 R 專案與一個 Python 專案,在同一個視窗裡來回切換。

與 RStudio、VS Code 的關係

Positron 位在兩者之間:借用 RStudio 的資料科學使用體驗,加上 VS Code 靈活、可擴充的基礎。

RStudioVS CodePositron
主要定位R(也支援部分 Python)通用程式開發Python 與 R 的資料科學
內建資料工具有(plots、environment、viewer)沒有(靠 extensions 補)有(plots、variables、viewer、Data Explorer)
底層基礎專為 RStudio 打造Code OSSCode OSS
Extensions 來源有限Visual Studio MarketplacePosit Public Package Manager(P3M)
怎麼定位
  • 從 RStudio 轉來:把 Positron 想成「你的資料科學工具,搬到更彈性、更現代的基礎上」。
  • 從 VS Code 轉來:把 Positron 想成「內建資料科學功能的 VS Code」。

關鍵詞

  • Positron:Posit 的次世代、多語言資料科學 IDE。
  • IDE:整合開發環境,把編輯器、主控台、圖表、檔案管理放在同一個視窗。
  • Polyglot:多語言;此處指同時支援 Python 與 R。
  • Code OSS:VS Code 背後的開源核心,Positron 與 VS Code 共用。
  • P3M(Posit Public Package Manager):Positron 預設的 extensions 來源(第 4 單元詳述)。
  • Data Explorer:Positron 內建的資料檢視工具(原文僅列名稱,用法本單元未說明)。
📝 隨堂測驗(點選項作答)
下列何者最能描述 Positron?
Positron 是 IDE(開發環境),不是雲端服務、套件管理器,更不是新語言。
下列關於 Positron 的敘述,哪一項正確?
Plots、Variables 等資料科學工具是內建的;Positron 可本機安裝,且 Python 與 R 都是一等公民。
和 VS Code 比較,Positron 最大的差異是?
兩者同為 Code OSS 基礎;Positron 的差異在於把資料科學工具內建,且 extensions 預設來自 P3M。

可執行要點

Positron 的介面配置(The Positron Layout)

Positron 入門①介面導覽 · 第 2 單元
一句話總結

Positron 視窗可分成四個區域——Manage(管理)、Write(撰寫)、Run(執行)、Understand(理解)——對應「管理專案 → 寫程式 → 執行 → 看結果」的工作流程,而最值得先學的捷徑是 Command Palette(Cmd/Ctrl+Shift+P)。

你會學到
  • 四個主要區域各是什麼、預設在視窗哪個位置
  • 每個區域用來做什麼事
  • 四個區域如何對應日常工作流程
  • 如何顯示/隱藏區域,以及如何用 Command Palette 找任何指令

內容筆記

先認識整個視窗

第一次開啟 Positron,畫面看起來很擁擠,但其實只分成四個區域,各自對應工作流程的一環:管理專案、寫程式、執行、理解回傳結果。能叫出這四個名字,後面的課程就容易對上。

Positron 視窗被標成四個區域:最左側的 Manage、上方中央的 Write、下方中央的 Run、最右側的 Understand
Positron 視窗被標成四個區域:最左側的 Manage、上方中央的 Write、下方中央的 Run、最右側的 Understand

預設配置是:Manage 在視窗最左側、Write 在中央偏上、Run 在 Write 的正下方、Understand 在最右側。

四個區域

區域預設位置對應的介面元件用途
Manage最左側Activity bar(活動列)+ Side bar(側邊欄)管理環境:開資料夾、在 Explorer 瀏覽檔案、搜尋、使用 Source Control
Write中央偏上Editor(編輯器)撰寫:腳本、notebook、文件都以分頁開在這裡,是主要寫作的地方
Run編輯器正下方Console(主控台)與 Terminal(終端機)執行:從編輯器送出一行,或直接在 Console 輸入,立刻執行 Python 或 R 並看到結果
Understand最右側右側一組面板理解:Variables 顯示環境中有什麼、Plots 顯示圖表,另有 Help 與 Viewer

Manage:Activity bar 是視窗最左邊的一條圖示列,緊鄰它的是 Side bar。點選 Activity bar 上的圖示,就會切換 Side bar 顯示的內容。

Write:腳本、notebook、文件各以一個分頁開在編輯器裡(例如開著一支 R 腳本 testing.R),大部分撰寫工作在這裡完成。

Run:位於編輯器下方的面板,上方有一排分頁,包括 Console、Terminal、Problems、Output、Ports、Debug Console。

編輯器下方的面板:分頁列依序為 CONSOLE、TERMINAL、PROBLEMS、OUTPUT、PORTS、DEBUG CONSOLE;目前停在 CONSOLE,顯示 R 4.5.3 啟動訊息與等待輸入的 > 提示符號
編輯器下方的面板:分頁列依序為 CONSOLE、TERMINAL、PROBLEMS、OUTPUT、PORTS、DEBUG CONSOLE;目前停在 CONSOLE,顯示 R 4.5.3 啟動訊息與等待輸入的 > 提示符號

Understand:右側面板上方有分頁(Session、Connections、Help、History、Viewer 等,下一單元詳述);Session 分頁內有 Variables 與 Plots 兩個區塊。

區域只是思考方式

這四區是理解版面的「思考框架」,不是固定的牆。Positron 允許重新排列與調整面板大小,可以依自己的習慣調整(第 4 單元會教)。

區域如何串成工作流程

流程是:在左側管理專案 → 在中央撰寫程式 → 在正下方執行 → 在右側理解結果。視線大致由左到右、由上到下,每一步的位置都很靠近下一步。

顯示/隱藏任一區域

不必一直開著所有區域。視窗右上角有三個版面切換圖示,可分別開關:左側的 side bar、下方的 panel、右側的 panes。

三個版面切換圖示,由左至右依序控制:顯示或隱藏左側 side bar、下方 panel、右側 panes
三個版面切換圖示,由左至右依序控制:顯示或隱藏左側 side bar、下方 panel、右側 panes

小練習:這件事屬於哪個區域?

任務區域
開啟專案資料夾Manage
瀏覽專案檔案Manage
檢視 Source Control 的變更Manage
編輯 R 腳本Write
在分頁開啟 notebookWrite
輸入指令並立刻看結果Run
在 Terminal 執行 shell 指令Run
查看工作階段中有哪些變數Understand
看剛畫好的圖Understand

Command Palette(指令面板)

在四個區域之外,做幾乎任何事最快的方法就是 Command Palette:

  • 快捷鍵:Cmd+Shift+P(macOS)/Ctrl+Shift+P(Windows/Linux)
  • 或點視窗上方的搜尋列,選 Show and Run Commands
  • 然後輸入想做的事並執行,不必在選單裡翻找

幾乎所有指令、設定、動作都能從這裡抵達,所以是「第一個值得學的捷徑」。後面課程會用它來切換主題、開啟設定、管理 sessions。

關鍵詞

  • Activity bar(活動列):視窗最左側的一條圖示列,用來切換 Side bar 內容。
  • Side bar(側邊欄):緊鄰 Activity bar,顯示目前選取的檢視(如 Explorer)。
  • Editor(編輯器):中央撰寫腳本、notebook、文件的區域。
  • Console / Terminal:編輯器下方,執行 Python/R 與 shell 指令的地方。
  • Command Palette:用輸入文字搜尋並執行指令的面板。
📝 隨堂測驗(點選項作答)
你想「看目前環境裡有哪些變數」,應該去哪一區?
Variables、Plots、Help、Viewer 都在 Understand 區(預設位於最右側)。
把 Positron 的四區對應到工作流程,順序是?
管理專案、撰寫程式、執行、理解結果。
想快速找到並執行任何指令,最該先記住哪個快捷鍵?
Cmd/Ctrl+Shift+P 開啟 Command Palette,幾乎所有指令與設定都能從這裡抵達。

可執行要點

核心面板與區域(Core Panes & Areas)

Positron 入門①介面導覽 · 第 3 單元
一句話總結

Activity bar 決定左側 side bar 顯示什麼;編輯器是「寫」、Console 是「跑」(Cmd/Ctrl+Enter 把程式送進 Console);右側面板用 Session(Variables+Plots)、Help、History、Viewer 四個分頁收納資料科學工具。

你會學到
  • 如何使用 Activity bar 與 Primary side bar
  • 編輯器與 Console 的用途與差別
  • 右側各資料面板(Session、Help、History、Viewer)各做什麼

內容筆記

Activity bar 與 Primary side bar

Activity bar 預設是視窗最左側一條垂直的圖示列。每個圖示會在緊鄰的 Primary side bar 開啟不同的檢視;點圖示,側邊欄內容就跟著切換。

圖示名稱開啟的檢視用途
Explorer檔案樹瀏覽並開啟專案中的檔案
Search搜尋檢視在整個專案中搜尋與取代文字
Source ControlGit 檢視用 Git 進行 stage、commit、檢視變更
Run and Debug偵錯檢視執行程式並以中斷點逐步除錯
ExtensionsExtensions 檢視瀏覽並安裝擴充功能
PackagesPackages 檢視瀏覽、安裝、更新、移除 Python 與 R 套件
Posit AssistantPosit Assistant 對話與內建 AI 助理 Posit Assistant 討論你的程式碼
Data ConnectionsData Connections 檢視儲存資料庫連線、瀏覽資料表、在 Data Explorer 預覽,並用 Connect With 產生連線程式碼
騰出編輯空間

再點一次「目前選取中」的圖示就會收起 side bar,給編輯器更多空間;點任一圖示即可叫回來。

Data Connections 是預覽功能

要先選擇啟用,圖示才會出現:開啟 Settings,搜尋 dataConnections.enabled,勾選後重新載入 Positron。

編輯器與 Console:寫 vs. 跑

兩者初學容易混淆,要點是:編輯器用來「寫」程式,Console 用來「執行」程式。

Editor(編輯器)Console(主控台)
角色寫程式的地方執行程式的地方
內容以分頁開啟腳本、notebook 與其他檔案互動式執行 Python 或 R:輸入一行、按 Enter、立即看到結果
特性在你「送出」之前不會執行;可分割編輯器並排看兩個檔案很適合快速檢查、探索資料

從編輯器執行一行時,那行會被送到 Console 並在那裡執行。把游標放在腳本的某一行,按 Cmd+Enter(macOS)/Ctrl+Enter(Windows/Linux) 即可:

# 用 Cmd/Ctrl + Enter 送到 Console 執行
summary(mtcars$mpg)
在 testing.R 的第 1 行 summary(mtcars$mpg) 上按執行快捷鍵,下方 Console 隨即顯示該行的執行結果
在 testing.R 的第 1 行 summary(mtcars$mpg) 上按執行快捷鍵,下方 Console 隨即顯示該行的執行結果

(補充)這個「在腳本中逐行執行、結果出現在 Console」的操作,和 RStudio 的 Ctrl+Enter 習慣相同。

Console 跑在特定的 session 上

Console 永遠執行在某個特定的 interpreter session(某個 Python 或 R 版本)中。如何選擇與管理 session,第 5 單元會教。

右側面板:Secondary side bar 的四個分頁

預設在右側的面板是 Positron 資料科學工具的所在,以頂端分頁分組:Session、Help、History、Viewer(畫面中還可看到 Connections 分頁,本課未說明)。

分頁內容
Session一眼看完整個工作階段:Variables 列出環境中的物件(資料框、向量、數值等);Plots 收集你畫出的圖,可瀏覽、放大、匯出
Help不離開 Positron 就能查文件:搜尋 Python 或 R 說明,並連到 Positron 文件、社群論壇與 Posit cheat sheets
History已執行指令的紀錄。選一條用 To Console 重跑,或用 To Source 貼進腳本
Viewer顯示「應用程式或文件型」內容,如渲染後的 Quarto 報告、Shiny 應用,直接在 Positron 內檢視。類圖表輸出(即使可互動)則是顯示在 Plots,而不是 Viewer

Session 分頁:

Session 分頁:上方 Variables 區塊列出資料框 mtcars(32 列 × 13 欄)及其欄位 mpg、cyl、disp、hp、drat 的型別與前幾個值;下方 Plots 區塊顯示一張以 ggplot2 畫的「Fuel Efficiency vs. Weight」散布圖,並有儲存、複製、縮放等工具列
Session 分頁:上方 Variables 區塊列出資料框 mtcars(32 列 × 13 欄)及其欄位 mpg、cyl、disp、hp、drat 的型別與前幾個值;下方 Plots 區塊顯示一張以 ggplot2 畫的「Fuel Efficiency vs. Weight」散布圖,並有儲存、複製、縮放等工具列

History 分頁:

History 分頁:依時間列出先前在 Console 執行過的 R 指令(如 summary(mtcars$mpg)、library(ggplot2)),上方有 To Console 與 To Source 兩個按鈕
History 分頁:依時間列出先前在 Console 執行過的 R 指令(如 summary(mtcars$mpg)、library(ggplot2)),上方有 To Console 與 To Source 兩個按鈕

Viewer 分頁:

Viewer 分頁顯示一份渲染後的 Quarto HTML 報告「Fuel Efficiency Analysis」,內含 library(ggplot2) 程式碼與 mtcars 資料的前幾列輸出
Viewer 分頁顯示一份渲染後的 Quarto HTML 報告「Fuel Efficiency Analysis」,內含 library(ggplot2) 程式碼與 mtcars 資料的前幾列輸出

Help 分頁(內容為 Positron 文件、社群論壇、cheat sheets 的連結)沒有放圖,用文字描述即可。

面板可以拖曳

預設排列不合用時,可把任何面板拖到新位置;下一單元會講如何自訂版面。

(補充)若以 RStudio 對照:Variables 約略對應 Environment 分頁,Plots/Help/Viewer/History 在 RStudio 也有同名面板;Positron 把它們收進同一個右側面板的分頁中。

小練習:分頁配對

功能描述分頁
列出變數並收集圖表Session
保存你執行過的指令紀錄History
顯示渲染後的報告與應用程式Viewer
瀏覽 Python 與 R 文件Help

關鍵詞

  • Activity bar:最左側圖示列,切換 Primary side bar 顯示的檢視。
  • Primary side bar:緊鄰 Activity bar 的側邊欄,顯示 Explorer、Search 等。
  • Secondary side bar:預設在右側的面板區,含 Session、Help、History、Viewer 分頁。
  • Variables / Plots:Session 分頁內,分別列出環境物件與收集圖表。
  • To Console / To Source:History 中,把指令重新執行/貼回腳本。
  • Posit Assistant:Positron 內建的 AI 助理。
📝 隨堂測驗(點選項作答)
Activity bar(最左側的圖示列)的功能是?
每個圖示對應一種檢視(Explorer、Search、Source Control⋯),點選後側邊欄隨之切換。
從編輯器執行游標所在的那一行,用什麼快捷鍵?
Cmd/Ctrl+Enter 會把該行送到 Console 執行。
想把先前執行過的某條指令重新跑一次,應該用哪個分頁與按鈕?
History 記錄指令;To Console 重跑,To Source 則貼進腳本。
互動式的圖表輸出與渲染後的 Quarto 報告,各會顯示在哪裡?
原文指出類圖表輸出(即使可互動)進 Plots;應用程式/文件型內容(Quarto 報告、Shiny)進 Viewer。

可執行要點

Extensions、主題與快捷鍵(Extensions, Themes & Shortcuts)

Positron 入門①介面導覽 · 第 4 單元
一句話總結

Extensions 從 Extensions 檢視安裝(預設來源是 P3M),主題與設定幾乎都能透過 Command Palette 達成;從 RStudio 轉來的人只要打開 workbench.keybindings.rstudioKeybindings 並重啟,就能沿用熟悉的快捷鍵,版面亂了也能一鍵重置。

你會學到
  • Extensions 如何運作、從哪裡來
  • 如何更換色彩主題
  • 快捷鍵與「RStudio keybindings」設定如何運作
  • 如何重新排列並重置面板版面

內容筆記

Extensions(擴充功能)

Extensions 為 Positron 增加功能,從語言支援、主題到生產力工具都有。到 Activity bar 的 Extensions 檢視(圖示像一疊方塊)瀏覽與安裝。

安裝步驟:開啟 Extensions 檢視 → 搜尋想要的 → 在結果上按 Install。裝好後該項目會出現齒輪圖示,並列在「已安裝」清單中。

Extensions 檢視:頂端是「Search Extensions in Marketplace」搜尋框,下方 INSTALLED 清單(17 個)列出 Air - R Language Support(R 格式化與 language server,Posit Software, PBC 發行)、Black Formatter、GitHub Pull Requests、Jupyter 等,每項右側有齒輪圖示
Extensions 檢視:頂端是「Search Extensions in Marketplace」搜尋框,下方 INSTALLED 清單(17 個)列出 Air - R Language Support(R 格式化與 language server,Posit Software, PBC 發行)、Black Formatter、GitHub Pull Requests、Jupyter 等,每項右側有齒輪圖示
預設來源:P3M

Positron 預設從 Posit Public Package Manager(P3M) 安裝 extensions,由 Posit 自己的基礎設施提供,確保穩定散布。其目錄與 Open VSX(Visual Studio Marketplace 的開源、中立替代品)相同。若想直接用 Open VSX,切換 positron.extensions.gallerySource 設定即可。

Bootstrapped extensions

有些 extensions 是「bootstrapped」:隨 Positron 附帶、自動幫你裝好。例如 Posit Publisher,因此開箱即可發佈到 Posit Connect。完整清單見 positron.posit.co/extensions.html#bootstrapped-extensions。

Color Themes(色彩主題)

Positron 內建多款主題,隨時可切換;選到某個主題時介面顏色立即改變,所以可以先預覽再決定。

內建主題舉例:Light(預設)、Dark、Tomorrow Night Blue、Light High Contrast、Dark High Contrast。

開啟主題選單有兩種方式:

方式步驟
Command Palette1. 按 Cmd+Shift+P(macOS)/Ctrl+Shift+P(Windows/Linux)。 2. 輸入 Color Theme,選 Preferences: Color Theme。 3. 用方向鍵預覽,按 Enter 套用
選單1. 開啟設定選單(齒輪圖示,通常在左下角)。 2. 選 Themes → Color Theme。 3. 從清單選一個主題套用

Keyboard Shortcuts(鍵盤快捷鍵)

從 RStudio 轉來不需要重學所有快捷鍵,Positron 可以把快捷鍵重新對應成你熟悉的。

模式說明
Default keybindingsPositron 預設快捷鍵,與 Code OSS 生態系共用
RStudio keybindings內建設定(不是 extension),啟用一大批 RStudio 快捷鍵,例如 Ctrl+1、Ctrl+2 分別聚焦到 Source 與 Console

開啟 RStudio keybindings:

  1. 開啟設定:Cmd+,(macOS)/Ctrl+,(Windows/Linux),或在 Command Palette 執行 Preferences: Open Settings。
  2. 搜尋 workbench.keybindings.rstudioKeybindings,勾選核取方塊。
  3. 重新啟動 Positron 才會生效。
補充說明

完整快捷鍵清單見 positron.posit.co/migrate-rstudio-keybindings.html。即使不啟用此設定,也有少數熟悉的 RStudio 快捷鍵本來就能用。

檢視或修改單一快捷鍵: Command Palette 執行 Preferences: Open Keyboard Shortcuts → 以名稱搜尋指令(例如 Run Selection)→ 雙擊它的快捷鍵 → 按下想指定的新按鍵。

指定新快捷鍵前先檢查衝突

留意「When」欄位與衝突警告。重複使用已被綁定的組合,可能蓋掉你原本依賴的快捷鍵。

設定跟著使用者設定檔走

你的客製化會綁在 user profile 上,下次開啟 Positron 依然保留。

自訂版面(Customizing Your Layout)

面板不是固定死的,可依工作習慣重排,也能隨時回到整齊的起點。

  • 預設版面(Preset layouts):開 Command Palette,執行 Customize Layout 相關指令(搜尋 layout),在內建配置間切換,例如以 Posit Assistant 為優先的版面、或適合 notebook 工作的版面。
  • 自行移動:拖曳面板的分頁,停靠到新位置;或在 Activity bar 圖示上按右鍵,隱藏它或改變位置。
  • 重置:版面亂掉時,在 Command Palette 執行 View: Reset View Locations,全部恢復預設。
版面也會被記住

與其他客製化一樣,版面變更跟著 user profile,下次開啟會記得。

指令/設定對照

指令或設定作用
Preferences: Color Theme預覽並套用色彩主題
workbench.keybindings.rstudioKeybindings重啟後啟用熟悉的 RStudio 快捷鍵
Preferences: Open Keyboard Shortcuts檢視並重新指定個別快捷鍵
View: Reset View Locations把每個面板放回預設位置

這些都能從 Command Palette 或 Settings 找到,想改外觀或行為,搜尋一下就到。

關鍵詞

  • Extension:擴充功能,加語言支援、主題、工具。
  • P3M:Posit Public Package Manager,Positron 預設的 extensions 來源。
  • Open VSX:開源、中立的 extensions 市集;目錄與 P3M 相同。
  • Bootstrapped extension:隨 Positron 附帶、自動安裝的 extension(如 Posit Publisher)。
  • RStudio keybindings:內建設定,啟用一批 RStudio 快捷鍵(需重啟)。
  • User profile:保存你的設定、快捷鍵與版面的使用者設定檔。
🎴 單字卡(點卡片翻面)
📝 隨堂測驗(點選項作答)
預設情況下,Positron 從哪裡安裝 extensions?
預設是 P3M,其目錄與 Open VSX 相同;要直接用 Open VSX 可改 positron.extensions.gallerySource。
啟用 RStudio keybindings 後,要怎樣才會生效?
勾選 workbench.keybindings.rstudioKeybindings 後必須重啟 Positron。
自訂版面弄亂了,想一鍵恢復預設,該執行?
View: Reset View Locations 會把每個面板放回預設位置。

可執行要點

Interpreter 選擇與 Sessions(Interpreter Selection & Sessions)

Positron 入門①介面導覽 · 第 5 單元
一句話總結

Interpreter 是執行程式的語言與版本,session 是它的一個執行實例,並在你重啟之前一直保存變數、已載入套件與歷史;重啟可得乾淨起點(但會清空記憶體),而 Positron 可同時開多個 session,Python 與 R 並行。

你會學到
  • 如何選擇 Python 或 R interpreter
  • session 是什麼、裡面保存了什麼
  • 重啟、切換、同時執行多個 session 的方式

內容筆記

選擇 Interpreter

名詞意思
Interpreter執行你程式的語言與版本(例如 R 4.5.3 或 Python 3.12)
Session一個 interpreter 的一次執行實例;保存你已執行程式的變數、已載入的套件與歷史,直到你重啟它

interpreter picker(interpreter 選擇器) 顯示 Console 目前跑的語言與版本,位於視窗上方的 action bar 最右上角,會顯示類似 R 4.5.3 或 Python 3.12。

操作:點它 → 開啟 Positron 偵測到的 interpreter 清單 → 選你要的 → 指示文字隨之更新。

尚未啟動任何 session 時,Console 顯示「There is no session running. Use Start Session to start one.」,視窗右上角有 Start Session 按鈕與資料夾名稱;之後從清單選擇 R 即可啟動
尚未啟動任何 session 時,Console 顯示「There is no session running. Use Start Session to start one.」,視窗右上角有 Start Session 按鈕與資料夾名稱;之後從清單選擇 R 即可啟動
補充說明

若機器上裝了多個 Python 或 R 版本,都會列在這裡;這也是把專案固定在特定版本的方式。若你裝的某個版本沒出現在清單,通常是因為它在非標準位置,Positron 沒偵測到。

重啟與切換 Session

有時想要乾淨的起點,或想同時並排跑 Python 與 R。三種操作:

操作作法
Restart(重啟)取得全新的 session,清除所有變數與已載入的套件;可從 Command Palette,或 Console 上的重啟控制項執行
Start an additional session(另開 session)從 interpreter picker 再啟動一個;Positron 可同時保留多個執行中的 session
Switch(切換)從 Console 的 session 清單選你要的 session
Console 旁的 session 清單同時列出 R 4.5.3 與 Python 3.10.18 (uv) 兩個執行中的 session,目前選中的是 Python;Console 顯示 Python 啟動訊息與 >>> 提示符號
Console 旁的 session 清單同時列出 R 4.5.3 與 Python 3.10.18 (uv) 兩個執行中的 session,目前選中的是 Python;Console 顯示 Python 啟動訊息與 >>> 提示符號
重啟會清空記憶體

重啟 session 會抹掉該 session 在記憶體中的一切:變數、已載入的套件、指令歷史。需要的東西請先存檔。

多語言 IDE 的好處

同時在不同 session 跑 Python 與 R,是多語言 IDE 的一大優點,不必關掉一個才能用另一個。

情境判斷:該用哪一招?

情境:你整個早上都在 R session 做實驗,現在腳本給出的結果和你第一次跑時不同,懷疑是先前實驗留下的變數干擾。

選項判斷
換成另一個 R 版本不對。換版本會改變 interpreter 本身,可能帶來新差異;問題在記憶體內容,不在版本
另開一個 Python session不對。Python session 與 R 並行、互不影響,你的 R session 仍有那些殘留變數
重啟 R session,再從頭跑腳本正確。重啟會清掉記憶體中的變數、套件與歷史,從乾淨狀態重跑才看得出腳本真正的輸出

關鍵詞

  • Interpreter:執行程式的語言與版本。
  • Session:interpreter 的一個執行實例,保存變數、套件、歷史。
  • Interpreter picker:視窗右上方 action bar 的選擇器,顯示並切換語言版本。
  • Restart:重啟 session,得到乾淨狀態但清空記憶體。
📝 隨堂測驗(點選項作答)
你懷疑腳本結果被前面實驗留下的變數干擾,最直接的作法是?
重啟會清除變數、已載入套件與歷史,讓你在乾淨狀態重跑。
下列哪一項說法正確?
Positron 支援多個 session 並行;重啟只影響記憶體,與檔案無關;picker 會列出偵測到的所有版本。
Interpreter picker 位在哪裡?
它在上方 action bar 的右上角,顯示類似 R 4.5.3 或 Python 3.12。

可執行要點

課程總複習(Course Recap)

Positron 入門①介面導覽 · 第 7 單元(總複習;第 6 單元為在 Positron 內的動手實作,本筆記未收錄)
一句話總結

這門課教你在 Positron 裡「找得到東西」:它是 Python 與 R 並行的資料科學 IDE,視窗分成 Manage/Write/Run/Understand 四區,並能用 extensions、主題、快捷鍵、版面與多個 session 調成自己的工作方式。

你會學到
  • Positron 是什麼,與 RStudio、VS Code 的關係
  • 四個區域:Manage、Write、Run、Understand
  • Activity bar、編輯器、Console、右側面板各自做什麼
  • 如何用 extensions、主題、快捷鍵、版面客製化
  • 如何選擇 interpreter 並管理 sessions

內容筆記

1. Positron 是什麼(第 1 單元)

Posit 的次世代、多語言(Python + R)資料科學 IDE,建立在與 VS Code 相同的開源核心 Code OSS 上。相較 RStudio:基礎更彈性;相較 VS Code:資料科學工具(plots、variables、viewer、Data Explorer)是內建的。

2. 四個區域(第 2 單元)

區域預設位置內容
Manage最左側Activity bar + side bar(Explorer、搜尋、Source Control)
Write中央偏上編輯器
Run編輯器下方Console 與 Terminal
Understand最右側Variables、Plots、Help、Viewer

工作流程:管理 → 撰寫 → 執行 → 理解。視窗右上角三個圖示可顯示/隱藏左側 side bar、下方 panel、右側 panes。

3. 核心面板(第 3 單元)

  • Activity bar 切換 side bar 的檢視:Explorer、Search、Source Control、Run and Debug、Extensions、Packages、Posit Assistant、Data Connections(預覽功能,需啟用 dataConnections.enabled)。
  • 編輯器是「寫」,Console 是「跑」;Cmd/Ctrl+Enter 把游標所在行送進 Console。
  • 右側分頁:Session(Variables+Plots)、Help、History(To Console/To Source)、Viewer(Quarto 報告、Shiny 等應用或文件)。

速查表:想做什麼,去哪裡

想要⋯使用
開啟資料夾或瀏覽專案檔案Activity bar 的 Explorer
寫腳本或 notebook中央的編輯器
執行程式並立刻看結果編輯器下方的 Console
查看變數與圖表右側的 Session 分頁
不離開 Positron 讀文件Help 分頁
依名稱找任何指令或設定Command Palette(Cmd/Ctrl+Shift+P)
更換執行的語言與版本右上角的 interpreter picker

4. 讓它成為你的(第 4 單元)

面向重點
Extensions從 Extensions 檢視安裝,預設來源是 Posit Public Package Manager
Themes執行 Preferences: Color Theme,用方向鍵預覽再決定
Shortcuts開啟 workbench.keybindings.rstudioKeybindings(重啟生效),或用 Preferences: Open Keyboard Shortcuts 重新指定
Layout拖曳面板、切換預設版面(搜尋 layout)、用 View: Reset View Locations 重置

5. Interpreter 與 Sessions(第 5 單元)

  • Interpreter = 語言+版本;session = 它的一次執行,保存變數、套件、歷史。
  • 右上角 interpreter picker 選擇;可重啟(清空記憶體)、另開 session、在 Console 的 session 清單切換。
  • Python 與 R 可並行各跑一個 session。

關鍵詞

  • Code OSS、Polyglot、P3M、Command Palette、Session / Interpreter:定義見第 1、2、4、5 單元筆記。
📝 隨堂測驗(點選項作答)
Positron 的四個區域依工作流程順序是?
管理專案 → 撰寫 → 執行 → 理解結果。
想查看目前的變數與圖表,應該看哪裡?
Session 分頁包含 Variables 與 Plots。
從 RStudio 轉來,想沿用熟悉的快捷鍵,該怎麼做?
這是內建設定而非 extension,需重啟才生效。

可執行要點

下面是課程建議的後續步驟:

📙

Positron 入門②處理資料(25 分)

· 5 篇
🗺️ 本課地圖(點單元標題可跳到那一篇)
用 Data Explorer 檢視資料檔(Viewing Data Files with the Data Explorer)在 Positron 的檔案樹選一下資料檔,就能用 Data Explorer 直接預覽 CSV/Parquet 等表格檔,不必先寫讀檔程式、也不會動到你的 R/Python session。
把資料載入 Python 與 R(Loading Data into Python and R)用一行標準讀檔指令把檔案讀成 Python/R 物件後,Variables pane 顯示 session 中的物件與摘要,點資料圖示(或 %view/View())即可在 Data Explorer 看完整表格。
用 Data Connections 連接資料庫(Connecting to Databases with Data Connections)開啟預覽功能 Data Connections 後,可把資料庫存成連線、不寫 SQL 就逐層瀏覽表格、在 Data Explorer 預覽,並用 Connect With 自動產生 Python/R 連線程式碼。
分析資料:圖表、表格與 Viewer(Analyzing Data: Plots, Tables, and the Viewer)分析輸出去哪由類型決定:圖(靜態或互動)進 Plots pane、App 與文件型輸出(含 HTML 表格)進 Viewer、純文字列印留在 console。
課程總複習(Course Recap)在 Positron 處理資料的流程是 預覽 → 載入 → 連線 → 轉成程式碼 → 分析輸出,每一步都有對應的內建面板。

用 Data Explorer 檢視資料檔(Viewing Data Files with the Data Explorer)

Positron 入門②處理資料 · 第 1 單元
一句話總結

在 Positron 的檔案樹選一下資料檔,就能用 Data Explorer 直接預覽 CSV/Parquet 等表格檔,不必先寫讀檔程式、也不會動到你的 R/Python session。

你會學到
  • 如何不經載入,直接用 Data Explorer 打開 CSV 或 Parquet
  • Data Grid、Summary panel、Filter bar 各自的功能
  • 什麼時候「先預覽」比「先載入」划算

內容筆記

先預覽、再載入

專案資料夾裡有一個檔案(下載來的、別的工具匯出的、同事給的),你想先知道裡面有什麼。直覺是寫程式讀進來,但其實不用——Positron 可以直接把檔案秀給你看。

Data Explorer 是 Positron 內建的表格資料檢視工具,可打開資料檔與記憶體中的 data frame,以快速、類試算表的介面檢視,不必離開 IDE。(對熟 RStudio 的人:相當於 View() 的強化版,而且連檔案都能直接開。)

做法怎麼做對 session 的影響
只預覽(Just previewing)用 Data Explorer 開檔,Positron 在背景讀取你的 Python/R session 裡不會多出任何變數,腳本裡也不會多出讀檔程式
載入 session(Loading)把檔案讀進變數,準備清理、轉換、建模時才做變數出現在 session 中(下一單元)

打開資料檔

Data Explorer 背後由 DuckDB 驅動,可直接開多種表格格式;CSV 和 Parquet 最常用,但只是其中兩個例子:

格式副檔名
逗號分隔(CSV).csv
Tab 分隔(TSV).tsv
Parquet.parquet
Excel.xlsx
壓縮的 CSV/TSV/Parquet.csv.gz 等

支援清單持續增加,以官方 Data Explorer 文件為準(positron.posit.co/data-explorer.html)。

操作:在 Explorer(側邊欄的檔案樹)中選取該檔案。因為它是支援的資料格式,Positron 會用 Data Explorer 開啟,而不是純文字編輯器。(原文有一段動畫示範這個動作,步驟即上述:在檔案樹點資料檔 → 自動在 Data Explorer 開啟。)

想看原始 CSV 文字?

在 Data Explorer 上方動作列按 Open as Plain Text File(按鈕是一個文件圖示加上這行文字),即可切到純文字檢視。

Data Explorer 的三個部分

三個部分合起來,幾秒就能對資料集有感覺:

部分功能
Data Grid(資料格線)顯示列與欄;可捲動瀏覽、依欄排序
Summary panel(摘要面板)逐欄顯示型別、缺值比例、分布(小直方圖或長條)
Filter bar(篩選列)把檢視縮到某個子集,不改動原檔

下圖是 weather.csv(1,460 列、8 欄)的實際畫面:Summary panel 逐欄列出 date、city、temp_high_f、temp_low_f、precip_in、humidity_pct、wind_mph、condition 的型別圖示、分布小圖與缺值百分比(數值欄約 1–2% 缺值);Data Grid 顯示每列資料,缺值格顯示 NULL;上方動作列有 Clear Column Sorting、Convert to Code、File Options、Open as Plain Text File;底部狀態列寫著列數與欄數。

Data Explorer 開啟 weather.csv:Summary panel 逐欄列出型別、分布與缺值%,Data Grid 顯示列資料,上方動作列有 Convert to Code 與 Open as Plain Text File
Data Explorer 開啟 weather.csv:Summary panel 逐欄列出型別、分布與缺值%,Data Grid 顯示列資料,上方動作列有 Convert to Code 與 Open as Plain Text File
用 Summary panel 及早抓問題

它是最快發現問題的地方:某欄大半是缺值、數字被存成文字、出現意外的類別。分析之前就能抓到,避免後面踩雷。

把探索變成程式碼:Convert to Code

篩選、排序到想要的檢視後,按動作列的 Convert to Code,Positron 會產生能重現該檢視的 Python、R 或 SQL 程式碼,讓隨手探索變成可重現的分析步驟。

小結

  • 預覽是「低成本」認識資料集的方式,之後再決定怎麼載入。
  • 哪個部分做什麼:Data Grid 看列、Summary panel 看每欄的剖面、Filter bar 聚焦子集——全都不會碰原始檔案。

關鍵詞

  • Data Explorer:Positron 內建的表格資料檢視器,可開檔案或記憶體中的 data frame。
  • Data Grid:Data Explorer 的列欄格線,可捲動、依欄排序。
  • Summary panel:逐欄顯示型別、缺值、分布的摘要面板。
  • Filter bar:縮小檢視範圍的篩選控制,不改原檔。
  • Convert to Code:把目前的排序/篩選檢視轉成 Python、R 或 SQL 程式碼。
  • Open as Plain Text File:切換成原始純文字檢視。
  • DuckDB:Data Explorer 讀取檔案時使用的引擎。

可執行要點

📝 隨堂測驗(點選項作答)
你想快速看一個 Parquet 檔的內容,但不想把它載入 Python 或 R session。最好的第一步是?
Data Explorer 直接讀檔(背後用 DuckDB),不會在 session 裡產生變數。
哪個部分負責顯示每個欄位的型別、缺值比例與分布?
Data Grid 看列、Filter bar 縮小範圍;欄位剖面是 Summary panel。
排序與篩選出想要的檢視後,如何把它變成可重現的程式碼?
Convert to Code 會產生 Python、R 或 SQL 程式碼重現該檢視。

把資料載入 Python 與 R(Loading Data into Python and R)

Positron 入門②處理資料 · 第 2 單元
一句話總結

用一行標準讀檔指令把檔案讀成 Python/R 物件後,Variables pane 顯示 session 中的物件與摘要,點資料圖示(或 %view/View())即可在 Data Explorer 看完整表格。

你會學到
  • 如何用簡短標準的指令把檔案讀成 Python 或 R 物件
  • Variables pane 如何列出並摘要 session 中的物件
  • 如何把已載入的 data frame 在 Data Explorer 中打開檢視

內容筆記

從檔案到變數

預覽適合快速看一眼;當你要真正處理資料(清理、轉換、建模),就把它載入 session 的變數。

Python(用 polars;也可用 pandas):

import polars as pl

weather = pl.read_csv("weather.csv")

把 read_csv 換成 read_parquet 即可讀 Parquet。完成後 weather 就是 session 中的物件。

R(用 readr):

library(readr)

weather <- read_csv("weather.csv")

讀 Parquet 用 arrow::read_parquet(),或用 base R 的 read.csv()。同樣,weather 成為 session 中的物件。

本課重點不在讀檔函式

重點是:資料一旦存在變數裡,Positron 提供專屬工具讓你檢視它——這是本單元其餘部分的主題。

在 Variables pane 看見它

read 指令一跑完,新物件就出現在畫面右側的 Variables pane(這是你目前 session 中所有物件的即時檢視)。它提供三件事:

功能說明
名稱與摘要每個項目是「名稱+簡短摘要」:data frame 顯示維度,一般值顯示值本身
欄位細節展開 data frame 可看每一欄的值預覽與型別
即時 session載入就出現;重啟 session 後 pane 會清空

以 weather 為例,摘要是「1460 rows × 8 columns」,展開後每欄一列:date(Date)、city(字串,1460 筆)、temp_high_f、temp_low_f、precip_in、humidity_pct、wind_mph(皆為數值 double,1460 筆,缺值以 NA 顯示)、condition(字串)。

Variables pane 中展開的 weather:摘要 1460 rows x 8 columns,逐欄列出值預覽與型別(date、city、temp_high_f 等 8 欄)
Variables pane 中展開的 weather:摘要 1460 rows x 8 columns,逐欄列出值預覽與型別(date、city、temp_high_f 等 8 欄)
確認資料有沒有真的載入

Variables pane 是最快的確認方式。若預期的物件不在,檢查 read 指令是否無錯誤執行,以及結果是否有指派給變數(<- 或 =)。

重啟 session 會清掉物件

載入 weather 後若重啟 session,Variables pane 中它就不見了——因為重啟清除了 session,需要重新執行載入指令。檔案本身(weather.csv)不會被刪。

在 Data Explorer 打開已載入的物件

Variables pane 給摘要;想要完整的類試算表檢視,就把 data frame 在 Data Explorer 打開(與上一單元預覽檔案用的是同一個工具)。

最簡單:在 Variables pane 找到該 data frame,點它旁邊的資料圖示(一個格線/表格形狀的小圖示),就會在 Data Explorer 開啟。也可以用程式碼:

%view weather
View(weather)

開啟後分頁標題是 Data: weather,內容有 Summary panel(每欄的直方圖與缺值百分比)與可捲動的 Data Grid,上方動作列有 Clear Column Sorting 與 Convert to Code。

已載入的 weather 在 Data Explorer 的畫面:分頁標題 Data: weather,Summary panel 顯示各欄分布與缺值百分比,旁邊是可捲動的 Data Grid
已載入的 weather 在 Data Explorer 的畫面:分頁標題 Data: weather,Summary panel 顯示各欄分布與缺值百分比,旁邊是可捲動的 Data Grid
同一個 Data Explorer,兩種入口

檔案從 Explorer 開;已載入的物件從 Variables pane 開(或 %view/View())。兩種方式得到相同的 Data Grid、Summary panel、Filter bar。

關鍵詞

  • Variables pane:顯示目前 session 所有物件與摘要的即時面板。
  • %view:Python 中在 Data Explorer 開啟物件的魔術指令。
  • View():R 中對應的函式(RStudio 使用者熟悉,Positron 中會開 Data Explorer)。
  • 資料圖示:Variables pane 中 data frame 旁的小表格圖示,點下即開 Data Explorer。

可執行要點

📝 隨堂測驗(點選項作答)
你載入 weather 後重啟 session,Variables pane 中 weather 不見了。原因是?
Variables pane 反映即時 session;重啟後物件消失,檔案仍在。
已載入 weather 後,哪個做法「不能」在 Data Explorer 打開它的 session 物件?
Plots pane 是看圖的地方,與開啟 data frame 無關。
Python 要讀 Parquet 檔(polars)應把 read_csv 換成什麼?
原文:swap read_csv for read_parquet。R 端則用 arrow::read_parquet()。

用 Data Connections 連接資料庫(Connecting to Databases with Data Connections)

Positron 入門②處理資料 · 第 3 單元
一句話總結

開啟預覽功能 Data Connections 後,可把資料庫存成連線、不寫 SQL 就逐層瀏覽表格、在 Data Explorer 預覽,並用 Connect With 自動產生 Python/R 連線程式碼。

你會學到
  • Data Connections 是什麼、如何啟用
  • 如何新增本機 DuckDB 資料庫的連線
  • 如何瀏覽表格並在 Data Explorer 預覽
  • 如何產生可直接執行的 Python/R 連線程式碼
前置條件:Data Connections 是預覽功能,先啟用
  1. 開啟 Settings(macOS 按 Cmd+,;Windows/Linux 按 Ctrl+,)。
  2. 搜尋 dataConnections.enabled 並勾選。
  3. 重新載入 Positron 讓設定生效。

內容筆記

Data Connections 做什麼

資料不只存在檔案,很多在資料庫與資料倉儲。Data Connections 是 Positron 主側邊欄的一個檢視,可:儲存資料庫/資料倉儲連線、瀏覽內容(catalog、schema、table、view、column)、在 Data Explorer 預覽表格、產生 Python/R 連線程式碼。

開箱即支援:DuckDB、SQLite、PostgreSQL、Snowflake、Databricks、Redshift,以及任何已安裝本機 ODBC 驅動程式的資料庫。儲存連線時,密碼、token、連線字串存放在作業系統的 secret storage,而非明文。

預覽功能會持續演進

介面以官方 Data Connections 文件為準(positron.posit.co/data-connections.html)。

連到本機 DuckDB

DuckDB 很適合入門:在本機執行、不需架伺服器,整個資料庫就是你電腦上的一個檔案,所以沒有憑證要管理。

  1. 開啟 Data Connections 檢視(activity bar 上的資料庫圖示),按頂端的 +(Add Connection)。
  2. 在 Add Data Connection 對話框,按 DuckDB 旁邊的 Connect。
  3. 為連線命名(範例:Weather Data),按 Browse 選資料庫檔案(範例:weather.duckdb)。
  4. 按 Save。

連線出現在樹狀清單中,可供瀏覽。原文有一段動畫示範整個流程:新增連線、選 DuckDB、命名、瀏覽選檔、儲存,接著展開連線經 Tables 到 weather 表與其欄位,再於 Data Explorer 開啟該表——展開與預覽的步驟見下一節。

連線會被儲存,下次開 Positron 仍在,不必重設。

Read Only

DuckDB 與 SQLite 連線有 Read Only 勾選框。只想看資料時請保持勾選:你做什麼都不會改動資料庫,且連線開著時其他 session 仍可開同一個檔案。

瀏覽與預覽

連線儲存後變成可瀏覽的樹,不用寫任何 SQL:

  1. 展開連線以開啟它。綠點表示連線是活的。
  2. 展開 Tables(或 Views)看資料庫內容。
  3. 展開某張表可看其 Columns(含資料型別)與 Indexes。
  4. 對表雙擊(或右鍵選 Open in Data Explorer),即在 Data Explorer 預覽。

若資料庫有多個 schema,樹中會在表之上多一層 schema;本例的簡單 DuckDB 只有一個 schema,Positron 會直接顯示其 tables 與 views。

同一個 Data Explorer

資料庫表格也能排序、篩選、看欄位剖面,與檔案一樣。

用完後收合連線即斷線;若還有該連線開啟的 Data Explorer 分頁,連線會維持到最後一個分頁關閉。

在程式中使用連線:Connect With

瀏覽用來熟悉環境;要在腳本或 notebook 查詢時,Data Connections 能幫你寫連線程式碼:

  1. 對連線按右鍵,選 Connect With,再選 Python 或 R。
  2. 在對話框檢視產生的程式碼。
  3. 按 Copy 複製到剪貼簿、Create Script 在新檔開啟、或 Connect 在目前 console 執行。

DuckDB 產生的程式碼很短,大致如下:

import duckdb

con = duckdb.connect("weather.duckdb")
library(DBI)

con <- dbConnect(duckdb::duckdb(), "weather.duckdb")
憑證與 Include Secrets

需要憑證的資料庫,產生的程式碼會引用你儲存的 secret,而不是把密碼寫進去。另有 Include Secrets 勾選框可把憑證直接放進程式碼,但 Positron 會先要求確認,因為任何看到該程式碼的人都能看到你的憑證。

關鍵詞

  • Data Connections:儲存/瀏覽資料庫連線的側邊欄檢視(預覽功能)。
  • dataConnections.enabled:啟用此功能的設定鍵。
  • Add Connection(+):新增連線按鈕。
  • Read Only:唯讀勾選(DuckDB、SQLite)。
  • Connect With:右鍵選單,產生 Python/R 連線程式碼。
  • Include Secrets:把憑證直接寫入產生的程式碼(需確認,不建議)。
  • DuckDB:單檔、本機執行的分析型資料庫。

可執行要點

📝 隨堂測驗(點選項作答)
已儲存 DuckDB 連線,想在 Python 腳本查詢。取得連線程式碼最快的方式是?
Connect With 會產生可複製、建腳本或直接執行的連線程式碼。
儲存連線時,密碼與 token 放在哪裡?
Positron 把憑證存在作業系統的 secret storage,而非明文。
樹狀清單中連線旁的綠點代表什麼?
綠點表示連線 live。

分析資料:圖表、表格與 Viewer(Analyzing Data: Plots, Tables, and the Viewer)

Positron 入門②處理資料 · 第 4 單元
一句話總結

分析輸出去哪由類型決定:圖(靜態或互動)進 Plots pane、App 與文件型輸出(含 HTML 表格)進 Viewer、純文字列印留在 console。

你會學到
  • 圖表出現在 Positron 哪裡,以及如何瀏覽、縮放、儲存
  • Shiny app 與渲染後的報告如何顯示在 Viewer
  • 靜態表格與互動表格各自出現在哪

內容筆記

圖表進 Plots pane

資料載入後,通常先產生圖。執行畫圖程式時,Positron 會攔截並顯示在右側的 Plots pane。連互動圖也一樣:凡 Positron 判斷為「像圖」的輸出(如 plotly 圖、leaflet 地圖)都進 Plots pane,與靜態圖並列。

import seaborn as sns

sns.scatterplot(weather, x="temp_low_f", y="temp_high_f", hue="city")
library(ggplot2)

ggplot(weather, aes(temp_low_f, temp_high_f, color = city)) +
  geom_point()

下圖是 Python 版的結果:以 temp_low_f 為 x、temp_high_f 為 y 的散佈圖,依城市(Seattle、Denver、Miami、Chicago)上色,整體呈明顯正相關;上方是 Plots 工具列,右側是歷史縮圖條,列有這張 seaborn 圖和先前的一張 ggplot2 圖。

Plots pane 顯示 seaborn 散佈圖(temp_low_f 對 temp_high_f,依城市上色),上方有工具列,右側歷史縮圖含 seaborn 與 ggplot2 兩張圖
Plots pane 顯示 seaborn 散佈圖(temp_low_f 對 temp_high_f,依城市上色),上方有工具列,右側歷史縮圖含 seaborn 與 ggplot2 兩張圖

Plots pane 保存整個 session 的圖表歷史,可前後切換並匯出想要的那張:

工具列動作功能
Previous / Next在圖表歷史中前後翻
Zoom放大圖,或在獨立分頁/視窗開啟
Copy複製圖到剪貼簿以貼到別處
Save匯出成檔案(PNG、SVG、PDF 等)
每張圖標註產生它的語言

所以 Python 與 R 混用的 session 也容易分辨(上圖歷史中即有 seaborn 與 ggplot2 兩種)。

App 與報告進 Viewer

非圖的輸出,由 Viewer pane 顯示:App 與文件型的網頁內容——平常會用瀏覽器開的東西。經典例子是在 Positron 內執行 Shiny app;渲染後的 Quarto 與 R Markdown 報告也在這裡。

注意:決定去哪個 pane 的不是「是不是 HTML」;圖型的 HTML 輸出(如 plotly、leaflet)進 Plots pane。Viewer 專收行為像 App 或文件的輸出,可直接捲動、點擊、互動,不必離開 IDE。(原文動畫示範:在 Viewer 中調整 Shiny 的輸入控制項,圖即時更新。)

表格:靜態與互動

靜態表格:以純文字列印到 console,適合快速看摘要或前幾列。

weather.head()

輸出為 console 的等寬文字表格:先印 shape: (5, 8),再列欄名、各欄型別(str、f64、i64)與前五列資料。

console 中 weather.head() 的輸出:shape (5, 8),欄名、型別與前五列資料,皆為等寬純文字
console 中 weather.head() 的輸出:shape (5, 8),欄名、型別與前五列資料,皆為等寬純文字

互動表格:以 HTML 在 Viewer 渲染,而非 console 純文字。下例用 great_tables 格式化;R 可用 gt 與 DT,其中 DT 另有捲動、排序、搜尋。

from great_tables import GT

GT(weather.head(10))
Viewer pane 顯示 great_tables 產生的 weather 前 10 列 HTML 表格,缺值顯示為 None
Viewer pane 顯示 great_tables 產生的 weather 前 10 列 HTML 表格,缺值顯示為 None
一條規則

圖(靜態或互動)→ Plots pane;純列印輸出 → console;App 或文件型輸出(Shiny app、渲染報告、HTML 表格)→ Viewer。

分類練習(改寫)

輸出去處
seaborn 散佈圖、ggplot2 圖、leaflet 地圖Plots pane
Shiny app、渲染後的 Quarto 報告、great_tables 表格Viewer
weather.head() 的列印、模型摘要的列印console

關鍵詞

  • Plots pane:顯示圖表(含互動圖)並保存歷史的面板。
  • Viewer pane:顯示 App 與文件型網頁輸出。
  • 靜態表格:純文字列印在 console。
  • 互動表格:HTML 表格(great_tables、gt、DT)在 Viewer 渲染。
  • Shiny:R/Python 的互動式網頁 App 框架。

可執行要點

📝 隨堂測驗(點選項作答)
你用 leaflet 套件做了互動地圖,Positron 會顯示在哪?
被判斷為圖型的輸出(含 plotly、leaflet)都進 Plots pane。
哪一種輸出會出現在 Viewer?
HTML 表格屬於文件型輸出,在 Viewer 渲染;圖進 Plots、列印進 console。
想把 Plots pane 的某張圖存成 PNG 或 PDF,用哪個工具列動作?
Save 匯出成 PNG、SVG、PDF 等檔案。

課程總複習(Course Recap)

Positron 入門②處理資料 · 第 6 單元
一句話總結

在 Positron 處理資料的流程是 預覽 → 載入 → 連線 → 轉成程式碼 → 分析輸出,每一步都有對應的內建面板。

你會學到
  • 不載入就用 Data Explorer 預覽 CSV、Parquet 等表格檔
  • 載入 Python/R 並用 Variables pane 與 Data Explorer 檢查
  • 用 Data Connections 連資料庫、瀏覽表格、產生連線程式碼
  • 圖、App、報告、表格各自顯示在哪

內容筆記

Positron 的資料工作流程

步驟做什麼
1. Preview(預覽)在 Explorer 選資料檔,以 Data Explorer 開啟;寫程式前先看 Summary panel
2. Load(載入)把檔案讀進變數,在 Variables pane 確認,再從那裡開 Data Explorer
3. Connect(連線)在 Data Connections 新增資料庫、瀏覽表格、雙擊預覽
4. Bring it into code(轉成程式碼)用 Connect With 產生連線程式碼;或用 Convert to Code 把篩選後的 Data Explorer 檢視轉成程式碼
5. Analyze(分析)圖進 Plots pane、App 與報告進 Viewer、純列印留在 console

哪個功能在哪裡(速查表)

當你想要…該用
不載入就看資料檔內容Data Explorer(在 Explorer 選檔案)
確認 session 載入了什麼Variables pane
逐列檢查已載入的 data frameData Explorer(資料圖示、%view 或 View())
瀏覽資料庫的表格Data Connections
取得連到已存資料庫的程式碼Data Connections 的 Connect With
看圖(靜態或互動)Plots pane
執行 Shiny app 或讀渲染後的報告Viewer

各單元重點回顧

  • 第 1 單元:Data Explorer 預覽 .csv、.tsv、.parquet、.xlsx、壓縮檔;Data Grid/Summary panel/Filter bar;Convert to Code。
  • 第 2 單元:read_csv(R 的 readr、Python 的 polars)等讀檔;Variables pane 反映即時 session、重啟即清空;%view/View()。
  • 第 3 單元:啟用 dataConnections.enabled;Add Connection 存連線(憑證放 OS secret storage);展開 Tables、雙擊預覽;Connect With 產生 duckdb.connect() 或 dbConnect(duckdb::duckdb(), ...) 程式碼。
  • 第 4 單元:Plots pane 的歷史與 Zoom/Copy/Save;Viewer 收 App 與文件型輸出;靜態表格在 console、互動表格在 Viewer。

下一步

  • 用你自己的資料集走完整個流程:預覽、載入,並做一張圖與一張表。
  • 透過 Data Connections 連上工作中使用的資料庫,用 Connect With 起一支腳本。
  • 這些工具仍在演進,常查官方文件:Data Explorer(positron.posit.co/data-explorer.html)與 Data Connections(positron.posit.co/data-connections.html)。

(補充)原課程第 5 單元是在 Positron 內動手實作的 capstone,網頁無文字內容,本筆記未涵蓋;建議自己用上面「下一步」第一項當作練習。

關鍵詞

  • Data Explorer:檔案與 data frame 的類試算表檢視器。
  • Variables pane:session 物件即時清單。
  • Data Connections:資料庫連線管理(預覽功能)。
  • Connect With/Convert to Code:兩個「產生程式碼」的入口,前者產生連線、後者重現檢視。
  • Plots pane/Viewer/console:三個輸出去處。

可執行要點

📝 隨堂測驗(點選項作答)
你想知道目前 session 載入了哪些物件,最快看哪裡?
Variables pane 是 session 的即時清單。
要把篩選後的 Data Explorer 檢視變成可重現的程式碼,用哪個功能?
Connect With 產生連線程式碼;Convert to Code 重現檢視。
渲染後的 Quarto 報告會顯示在哪?
App 與文件型輸出進 Viewer。
📕

Positron 入門③執行與管理程式(24 分)

· 5 篇
🗺️ 本課地圖(點單元標題可跳到那一篇)
執行腳本(Running Scripts)腳本是「存放程式碼的地方」、Console 的 session 才是「執行程式碼的地方」;在腳本裡按 Cmd/Ctrl+Enter 就是把當前一個完整陳述式送進 session 跑,選取後可跑一段,播放鈕可跑整個檔案。
使用 Positron Notebook(Working with Positron Notebooks)Notebook 是由「儲存格(cell)」組成、把程式碼、文字與輸出放在同一份文件的格式;探索與說故事用 notebook,要重跑的管線用腳本,而 Positron 的原生 notebook 編輯器讓 Variables 窗格、Data Explorer 照常可用。
建立專案與管理環境(Creating Projects and Managing Environments)一個專案一個資料夾:用 New Folder from Template 一次建好環境(Python 的 venv、R 的 renv)、.gitignore 與選用的 Git,讓每個專案的套件彼此隔離、可重現。
用 Git 做版本控制(Version Control with Git)在 Positron 的 Source Control 檢視裡就能完成 Git 日常循環:檢視變更 → stage → commit,再用 Publish Branch/Sync 把專案推到 GitHub 等遠端備份與分享。
課程總複習(Course Recap)整門課濃縮成一個循環:用範本開專案 → 寫並執行程式 → 用 notebook 探索 → commit → push,搭配一張快捷鍵與控制項速查表即可上手。

執行腳本(Running Scripts)

Positron 入門③執行與管理程式 · 第 1 單元
一句話總結

腳本是「存放程式碼的地方」、Console 的 session 才是「執行程式碼的地方」;在腳本裡按 Cmd/Ctrl+Enter 就是把當前一個完整陳述式送進 session 跑,選取後可跑一段,播放鈕可跑整個檔案。

你會學到
  • 從腳本執行的程式碼如何進到 Console 顯示的同一個 interpreter session
  • 三種執行方式:一個陳述式(statement)、一段選取範圍、整個檔案
  • 對應的快捷鍵(Mac/Windows/Linux),以及與 RStudio 的關係

內容筆記

腳本與 session 的關係

直接在 Console 打幾行程式碼適合快速試算,但真正的分析會寫在腳本(script)裡:像 analysis.py、analysis.R 這種可儲存、可重跑、可分享的純文字檔。

核心心智模型:

腳本 vs. session

腳本是程式碼「住的地方」,session 是程式碼「跑的地方」。腳本檔本身並沒有綁定任何 session,它只是你從中送出程式碼的來源。

角色功能
腳本(編輯器)你儲存的永久紀錄。可隨意編輯、邊寫邊跑一小段、隨時整份重跑
Console即時運作中的 session。從腳本送出的每一行都會出現在這裡,與你直接在 Console 打的指令並列

從腳本執行程式碼,就是把它送到目前「作用中的(active)」interpreter session——也就是 Console 顯示的那一個,所以程式碼建立的變數就存在那個 session 裡。切到 Console 直接輸入變數名稱即可看到它。

三種執行方式

不必每次都從頭跑到尾。Positron 提供三種粒度。以下用原課的示範腳本為例(Python):

x = 5
y = 10
print(x + y)

1. 執行一個陳述式(Run one statement)

游標放在任一行上,按 Cmd+Enter(Mac)或 Ctrl+Enter(Windows/Linux)。Positron 會把「目前這個陳述式」送到 Console 執行,然後把游標移到下一個陳述式;連續按同一個快捷鍵,就能一步一步走完整份腳本。

是「陳述式」不是「一行」

Positron 執行的是完整的 statement。如果游標落在多行的函式呼叫或 pipeline(管線)中間,Cmd/Ctrl+Enter 會把整段一起跑。

2. 執行選取範圍(Run a selection)

用滑鼠反白一段程式碼,再按同一個快捷鍵 Cmd/Ctrl+Enter,只有反白的部分會被執行(一次全部送進 Console)。適合重跑幾行相關的程式碼,而不想逐句按。

3. 執行整個檔案(Run the whole file)

點編輯器動作列(editor action bar,位於編輯器左上方)的播放鈕(play button,三角形圖示),或按 Cmd+Shift+Enter(Mac)/Ctrl+Shift+Enter(Windows/Linux),整份腳本從頭跑到尾,輸出都出現在 Console。

速查表

動作快捷鍵適用時機
執行一個陳述式Cmd/Ctrl+Enter邊寫邊逐步檢查
執行選取範圍先反白,再 Cmd/Ctrl+Enter重跑特定一段
執行整個檔案播放鈕或 Cmd/Ctrl+Shift+Enter腳本寫完,從頭到尾執行
從 RStudio 轉來的人

這些快捷鍵與 RStudio 相同,肌肉記憶可直接沿用。若再啟用 RStudio keymap(RStudio 按鍵對應;官方說明頁 positron.posit.co/migrate-rstudio-keybindings.html),其餘的快捷鍵也會一併沿用。

想自己試?

還沒裝 Positron 的話,可從 positron.posit.co/download.html 免費下載。

可執行要點

📝 隨堂測驗(點選項作答)
游標在腳本某一行上,按 Cmd/Ctrl+Enter 會發生什麼事?
Cmd/Ctrl+Enter 執行當前陳述式並前進到下一個;整份檔案要用播放鈕或 Cmd/Ctrl+Shift+Enter。
你從腳本跑了幾行建立 data frame,接著在 Console 直接輸入它的名稱也能印出來。為什麼?
腳本只是來源,程式碼實際在作用中的 session 執行,變數就存在該 session。
游標在多行的函式呼叫中間,按 Cmd/Ctrl+Enter 會執行什麼?
Positron 以完整的 statement 為單位執行。

使用 Positron Notebook(Working with Positron Notebooks)

Positron 入門③執行與管理程式 · 第 2 單元
一句話總結

Notebook 是由「儲存格(cell)」組成、把程式碼、文字與輸出放在同一份文件的格式;探索與說故事用 notebook,要重跑的管線用腳本,而 Positron 的原生 notebook 編輯器讓 Variables 窗格、Data Explorer 照常可用。

你會學到
  • 何時 notebook 比腳本更適合
  • 如何建立 Positron notebook、必要時切換 kernel
  • 如何執行程式碼儲存格、加入 markdown、閱讀內嵌輸出

內容筆記

腳本還是 Notebook?

上一單元談腳本;notebook 是另一種組織工作的方式:不是一個程式碼檔,而是一串儲存格(cells),把程式碼、文字、輸出混在同一份文件。兩者沒有誰比較好,只是適合的工作不同。

適合用腳本適合用 notebook
要從頭到尾重跑的東西(資料管線、報表排程工作)探索資料,想讓結果緊貼著產生它的程式碼
程式碼比周邊敘述重要要說故事:分析敘述、圖表、結論放在一起
想要最簡單、最好做版本控制與分享的檔案要給同事閱讀、對方不用執行就看得懂

原課的分類練習:每晚重跑的資料管線、排程報表工作、要保持簡單以便版本控制的小清理步驟 → 腳本;用圖表探索新資料集、不必執行就能讀的分析報告、混合敘述文字/程式碼/圖的文件 → notebook。

Notebook 檔案格式

Positron 的 notebook 是標準 Jupyter .ipynb 檔,在 JupyterLab、VS Code 或任何支援 notebook 的地方都能開。

那 Quarto 呢?

Quarto(.qmd)文件同樣能混合程式碼、敘述與內嵌輸出,本單元幾乎所有內容也適用。選哪種格式多半是偏好。若遇到 .ipynb 的麻煩——版本控制的 diff 很雜、「一切都是 cell」的限制——通常下一步就是改用 .qmd:對版本控制更友善,也支援更複雜的文件。

Positron Notebook 編輯器

Positron 內建專為資料科學設計的原生 notebook 編輯器,是 .ipynb 的預設編輯器;你在 Positron 已經在用的東西(Variables 窗格、Data Explorer、內嵌說明)在裡面都能用。

建立 notebook 的步驟:

  1. 點左上角的 New 下拉選單
  2. 選 New Notebook
  3. Positron 自動啟動一個 kernel,馬上可寫程式
  4. 想換語言或版本,用 notebook 工具列的 kernel picker(kernel 選擇器) 切換

Python 與 R 的 kernel 都可使用。

儲存格:程式碼、Markdown 與輸出

工作循環很簡單:在儲存格寫程式碼 → 執行 → 輸出直接顯示在該儲存格下方。表格、圖、列印結果都會內嵌呈現(原課示範:在 Python 儲存格寫繪圖程式碼、按 Cmd+Enter 執行,圖就出現在儲存格正下方)。

動作快捷鍵
執行儲存格並移到下一格Shift+Enter
執行儲存格並留在原地Cmd/Ctrl+Enter
新增儲存格儲存格之間的 + Code/+ Markdown 按鈕

要加敘述,就插入 markdown 儲存格:可寫標題、項目符號、連結;執行該格後會轉成排版好的文字。這就是把一堆程式碼變成可讀分析的關鍵。操作步驟:點新增 markdown 儲存格的按鈕 → 輸入標題與一句話 → 執行該格,內容即渲染成格式化文字。

工作階段工具仍在

在 notebook 裡,儲存格建立的變數會顯示在 Variables 窗格,仍可把任何 data frame 在 Data Explorer 打開。

可執行要點

📝 隨堂測驗(點選項作答)
以下哪項工作最適合寫成腳本而非 notebook?
腳本適合要重跑、排程的程式碼;notebook 適合探索與說故事。
你選了 New Notebook 想跑 Python,在跑第一個儲存格前需要做什麼?
Positron 會自動啟動 kernel;只有想換語言或版本時才用 kernel picker。
Shift+Enter 在 notebook 儲存格中做什麼?
Shift+Enter 跑完往下;Cmd/Ctrl+Enter 跑完留在原地。

建立專案與管理環境(Creating Projects and Managing Environments)

Positron 入門③執行與管理程式 · 第 3 單元
一句話總結

一個專案一個資料夾:用 New Folder from Template 一次建好環境(Python 的 venv、R 的 renv)、.gitignore 與選用的 Git,讓每個專案的套件彼此隔離、可重現。

你會學到
  • 為何一專案一資料夾,以及 Positron 如何把「開啟的資料夾」當作工作區(workspace)
  • 如何用 New Folder from Template 建立新專案
  • renv(R)與 venv(Python)的作用,以及它們會在專案裡加什麼檔案

內容筆記

一個專案一個資料夾

實際工作中,腳本與 notebook 應從一開始就有組織良好的家:一個專案一個資料夾,程式碼、資料、輸出放一起。

在 Positron,工作區(workspace)就是你開啟的資料夾;裡面有什麼(程式碼、資料、環境、Git 歷史),Positron 就處理什麼。開啟資料夾後一切都以它為範圍:Explorer 顯示它的檔案、Console 在該資料夾啟動、相對路徑在其中解析。

Folder Selector

視窗右上角的 Folder Selector 顯示目前開啟的資料夾,並可在最近的資料夾間切換。它是一個按鈕:左側資料夾圖示、中間資料夾名稱,右側下拉箭頭。

Folder Selector 按鈕:資料夾圖示、目前資料夾名稱 run-manage-code、右側下拉箭頭
Folder Selector 按鈕:資料夾圖示、目前資料夾名稱 run-manage-code、右側下拉箭頭

New Folder from Template

Positron 能替你建好結構良好的專案資料夾。開啟左上角 New 下拉選單(或右上角 Folder Selector),選 New Folder from Template。New 選單內容依序為:New File、New Folder from Template、New Folder from Git、New Window。

New 下拉選單展開:New File、New Folder from Template(被選中)、New Folder from Git、New Window
New 下拉選單展開:New File、New Folder from Template(被選中)、New Folder from Git、New Window

對話框引導三個選擇:

  1. 選範本:Python Project、R Project、Jupyter Notebook 或 Empty Project
  2. 命名資料夾並選擇存放位置
  3. 設定選項:用哪個 interpreter、是否建立環境、是否初始化 Git repository

完整流程(以建立附虛擬環境的 Python 專案為例):開 New 選單 → New Folder from Template → 選 Python Project → 取名 → 接受預設值 → Positron 把新專案開成工作區。R Project 範本流程相同,只差環境那一項。

完成後新資料夾已有一些骨架:

你得到用途
專屬環境(Python 為 .venv/;R 若勾選 renv 則為 renv/)讓這個專案的套件隔離
.gitignore 檔預填該語言常見的忽略規則
Git repository(選用)從第一天就有版本控制(下一單元詳述)
為什麼用範本

範本比建空資料夾好,因為可重現性的零件(環境、.gitignore、Git)在你寫第一行程式前、最容易的時候就設好了。

可重現的環境

「專屬環境」值得理解:它解決每位資料科學家遲早會碰到的問題——兩個專案需要同一套件的不同版本。

專案的環境(environment)是屬於該專案的一組隔離套件。每個專案取得它需要的確切版本,為某專案安裝東西不會弄壞別的專案。

Python:venv

Python 專案範本預設建立虛擬環境(.venv 資料夾)。Positron 用標準 venv 工具建構,若已安裝 uv 則用 uv。無論哪種,Positron 都會自動把此環境選為專案的 interpreter,所以你安裝的套件會裝進專案、而非全系統。視窗上方的 interpreter 選擇器會顯示目前環境名稱,讓你隨時知道哪個環境在作用。

my-project/
├── .venv/          # 專案自己的套件與 interpreter
├── .gitignore
└── my-script.py
一個專案一個 .venv

讓 Positron 管理選擇。同事 clone 你的專案後,會建立自己的 .venv 並安裝同樣的套件。

R:renv

R 專案範本在設定時提供 renv 核取方塊。renv 給專案一個私有套件庫,加上一份鎖定檔(lockfile,renv.lock),記錄你用的確切套件版本,讓別人能重建你的環境。

my-project/
├── renv/           # 專案私有套件庫
├── renv.lock       # 確切套件版本,用於可重現
├── .Rprofile       # 專案開啟時啟用 renv
└── my-script.R
renv 是選用的

範本預設不勾選 renv,多數專案不用也沒問題。當可重現性真的重要才用:別人必須完全照你的方式執行的專案,或幾個月後需要精確重建的專案。完整流程見 renv 文件(rstudio.github.io/renv/)。

重點對照

問題答案
範本可為你設定什麼?Git repository、.gitignore、專屬套件環境(如 .venv);不包含自動雲端備份
兩專案需同一套件不同版本?各自一個環境(Python venv、R renv);不要共用資料夾、不要來回重裝、不要裝進同一共用套件庫

關鍵詞

  • Workspace(工作區):你在 Positron 開啟的資料夾
  • 環境(environment):專案專屬、隔離的一組套件
  • venv/.venv:Python 虛擬環境;有 uv 時改用 uv 建
  • renv/renv.lock:R 的私有套件庫與版本鎖定檔
  • Folder Selector:右上角顯示並切換開啟資料夾的按鈕

可執行要點

📝 隨堂測驗(點選項作答)
你在 Positron 開啟一個資料夾,會發生什麼?
工作區就是你開啟的資料夾,一切以它為範圍。
兩個專案需要同一套件的不同版本,建議作法是?
獨立環境讓各專案取得所需版本且互不影響。
關於 renv 的敘述何者正確?
renv 為選用,提供私有套件庫與 renv.lock。

用 Git 做版本控制(Version Control with Git)

Positron 入門③執行與管理程式 · 第 4 單元
一句話總結

在 Positron 的 Source Control 檢視裡就能完成 Git 日常循環:檢視變更 → stage → commit,再用 Publish Branch/Sync 把專案推到 GitHub 等遠端備份與分享。

你會學到
  • repository、stage、commit、push 的意思
  • 如何在 Positron 為專案初始化 Git repository
  • 如何 stage 與 commit 變更,並 push 到 GitHub 等遠端
前置條件

Positron 的版本控制功能依賴機器上已安裝 Git。在終端機執行 git --version 檢查;若出現錯誤,請先依你的作業系統安裝 Git。

內容筆記

為什麼要版本控制

你大概手動發明過版本控制:analysis_final.R、analysis_final_v2.R、analysis_final_REALLY.R。Git 用真正的歷史取代這團混亂:它是版本控制系統,記錄專案隨時間的快照;每個快照是可檢視、比較、回復的存檔點,也讓協作變得可管理。

四個詞撐起整個流程:

名詞意思
Repository(儲存庫)你的專案資料夾加上完整歷史,歷史存在隱藏的 .git 目錄
Stage(暫存)挑選哪些變更的檔案要放進下一個快照
Commit(提交)把已 stage 的變更存成快照,附一句簡短訊息
Push(推送)把 commit 上傳到遠端副本,例如 GitHub 或 GitLab 上的 repo

建立 repository

若用範本建專案時勾選了 Initialize Git repository,就已完成。對既有資料夾,Positron 一鍵搞定:

  1. 在活動列(activity bar)開啟 Source Control 檢視(分支線條圖示,見下圖)
  2. 按 Initialize Repository
Positron 活動列中的 Source Control 圖示:藍底、由分支線連接的三個圓圈
Positron 活動列中的 Source Control 圖示:藍底、由分支線連接的三個圓圈

操作後,Positron 建立隱藏的 .git 目錄,Source Control 檢視切換為顯示專案的未追蹤(untracked)檔案,並開始追蹤你在專案中的每個變更。

Stage、Commit、Push

日常循環:編輯檔案後,Source Control 檢視會列出所有有變更的檔案。下圖標註了該檢視各區域:

標註版 Positron 視窗:左側 Source Control 檢視,標出 Commit Message 輸入框、Commit 按鈕、More Git Commands(Push、Pull 等)選單、Modified Files 清單、檔案旁用來 Stage 的 + 按鈕,以及下方的 Commit History
標註版 Positron 視窗:左側 Source Control 檢視,標出 Commit Message 輸入框、Commit 按鈕、More Git Commands(Push、Pull 等)選單、Modified Files 清單、檔案旁用來 Stage 的 + 按鈕,以及下方的 Commit History

各區域功能:

區域功能
Modified Files變更過的檔案清單
Stage(+ 按鈕)把該檔案加入下一個快照
Commit Message輸入提交訊息的框(可用 Cmd+Enter 提交,Mac)
Commit 按鈕提交已 stage 的變更
More Git Commands(⋯ 選單)Push、Pull 等其他指令
Commit History下方的提交歷史

步驟:

  1. Review(檢視):點任一檔案,看並排的 diff(差異比對)
  2. Stage:按檔案旁的 + 按鈕,選出要快照的檔案
  3. Commit:輸入簡短描述並按 Commit;成功後變更清單清空
Commit 訊息是寫給未來的自己

「Add cleaning step for missing dates」半年後仍有意義;「updates」就沒有。

Push 到遠端

目前的 commit 只存在你的機器。要備份與分享,就把 repository push 到遠端(remote):託管在 GitHub、GitLab、Bitbucket 等服務的副本。你的機構可能有偏好的主機,Git 流程在各家都相同。

用 GitHub:第一次 push 只需一鍵——Source Control 檢視中的 Publish Branch 按鈕(藍色按鈕,帶雲端上傳圖示);它會引導你登入,並替你建立遠端 repository。

Source Control 檢視中的 Publish Branch 按鈕:藍色按鈕,左側雲端上傳圖示
Source Control 檢視中的 Publish Branch 按鈕:藍色按鈕,左側雲端上傳圖示

用其他主機:先在該服務建一個空的 repository,再到 Positron 連接:開啟 Source Control 檢視的 … 選單 → Remote > Add Remote → 貼上 repository URL。之後 push 的方式各處相同。

第一次 push 之後,按鈕會變成 Sync:把你的新 commit 推上去,同時把協作者的新內容拉下來。

資料檔常不該進遠端 repo

尤其是大型或敏感的檔案。在 commit 前把這些檔名或模式加進 .gitignore,Git 就當它們不存在。

日常循環順序

Review 變更(diff)→ Stage 要快照的檔案 → Commit 並附簡短訊息 → Push 到遠端。

關鍵詞

  • Git:記錄專案快照的版本控制系統
  • Repository:專案資料夾加歷史(.git)
  • Stage/Commit/Push:挑變更/存快照/上傳遠端
  • Remote(遠端):GitHub、GitLab、Bitbucket 上的副本
  • Publish Branch/Sync:首次推送並建立遠端/之後的雙向同步
  • .gitignore:列出 Git 應忽略的檔案

可執行要點

📝 隨堂測驗(點選項作答)
把已 stage 的變更存成附簡短訊息的快照,稱為什麼?
Commit 是存成快照;Stage 是挑變更;Push 是上傳遠端。
你有含多個 commit 的本機 repository,想備份到 GitHub,在 Positron 該怎麼做?
repository 已存在,Publish Branch 會引導登入並建立遠端 repo;Initialize 已做過。
日常循環的正確順序是?
先看 diff,再 stage,接著 commit,最後 push。
第一次 push 之後,Publish Branch 按鈕變成什麼?
Sync 會推上新 commit 並拉下協作者的新內容。

課程總複習(Course Recap)

Positron 入門③執行與管理程式 · 第 6 單元(總複習;第 5 單元為 Positron 內的動手實作,網頁僅有啟動按鈕,未收錄)
一句話總結

整門課濃縮成一個循環:用範本開專案 → 寫並執行程式 → 用 notebook 探索 → commit → push,搭配一張快捷鍵與控制項速查表即可上手。

你會學到
  • 從腳本一個陳述式、選取範圍、整個檔案三種粒度執行程式碼
  • 在 notebook 用程式碼儲存格、markdown 儲存格與內嵌輸出
  • 用資料夾範本建專案並附 venv/renv 環境
  • 用 Git 追蹤工作:review、stage、commit、push

內容筆記

日常工作流程

任何新工作都可套用這個五步循環:

  1. 開專案:用 New Folder from Template 取得資料夾,內含專屬環境、.gitignore,以及(選用)Git repository
  2. 寫並執行程式:用 Cmd/Ctrl+Enter 逐個陳述式執行腳本,再用播放鈕跑整個檔案
  3. 在 notebook 探索:想讓結果與敘述緊貼產生它的程式碼時,用儲存格
  4. Commit:檢視變更、stage 要放進快照的檔案、附清楚訊息 commit
  5. Push:Publish Branch 把 repository 放上 GitHub;之後 Sync 讓本機與遠端同步

速查表

想做的事用什麼
執行當前陳述式並往下Cmd/Ctrl+Enter
執行特定幾行先反白,再 Cmd/Ctrl+Enter
執行整份腳本播放鈕(編輯器左上)或 Cmd/Ctrl+Shift+Enter
執行 notebook 儲存格並移到下一格Shift+Enter
建立附環境的新專案New > New Folder from Template
切換最近的專案資料夾Folder Selector(右上角)
檢視、stage、commit 變更Source Control 檢視
首次把 repository 分享到 GitHubSource Control 的 Publish Branch

各單元重點回顧

  • 腳本(第 1 單元):腳本是程式碼住的地方,session 才是跑的地方;從腳本執行的程式碼送進 Console 同一個 session,變數也在那裡。
  • Notebook(第 2 單元):用於探索與敘述;腳本用於管線與重用。Positron 原生編輯器是 .ipynb 預設編輯器,支援 Python 與 R kernel,輸出內嵌,Variables 窗格與 Data Explorer 照常運作。
  • 專案與環境(第 3 單元):工作區就是開啟的資料夾;Python 範本預設建 .venv,R 範本可選 renv(renv.lock)。
  • Git(第 4 單元):commit 是快照;用 .gitignore 排除大型或敏感檔案;先決條件是已安裝 Git。

下一步(原課建議)

  • 挑一件真實工作,用對的方式起頭:用範本建新資料夾,第一天就帶環境與 Git
  • 小而頻繁地 commit,訊息要讓未來的自己看得懂
  • 隨時參考 Positron 官方文件(隨工具演進):Positron Notebook Editor(positron.posit.co/positron-notebook-editor.html)、Folder Templates(positron.posit.co/folder-templates.html)、Git Version Control(positron.posit.co/git.html)、Keyboard Shortcuts(positron.posit.co/keyboard-shortcuts.html)

可執行要點

📝 隨堂測驗(點選項作答)
要把整份腳本從頭跑到尾,可用?
Cmd/Ctrl+Enter 只跑當前陳述式;Shift+Enter 是 notebook 儲存格。
以下哪個流程順序符合課程的日常工作流?
先用範本開專案,最後 commit 並 push。
第一次把 repository 分享到 GitHub 用什麼?
Publish Branch 引導登入並建立遠端;之後用 Sync。
由 Course2Notes 自動生成 · 內容為使用者自有課程的個人學習筆記