R語言 | 如何使用R書寫html文檔?

更靈活的書寫方式,可以直接看3.

1. 可用函數

  • cat()函數
  • writeLines()函數
  • sink()函數重定向輸出到HTML文件

小結:cat()適合簡單HTML,writeLines()適合多行內容,sink()適合復雜場景。
說明:盡可能不用R包,減少依賴變動風險。

方法1: 使用cat()直接輸出

cat('<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>', file="output.html")

方法2: 使用writeLines()

html_content <- c('<!DOCTYPE html>','<html>','<head>','<title>My Page</title>','</head>','<body>','<h1>Hello World</h1>','</body>','</html>')
writeLines(html_content, "output.html")

方法3: 使用sink()

sink("output.html")
cat('<!DOCTYPE html>\n')
cat('<html>\n')
cat('<head>\n')
cat('<title>My Page</title>\n')
cat('</head>\n')
cat('<body>\n')
cat('<h1>Hello World</h1>\n')
cat('</body>\n')
cat('</html>\n')
sink()

2. 逐句拼湊html文件

如果不同R文件、同一個R文件的不同位置都要輸出信息到同一個html報告文件中呢?

  • 使用函數 cat的 append=T參數: cat('\n</body>\n</html>', file = filepath, append = TRUE)

(1)先定義庫函數:

# 初始化HTML文件
init_html <- function(filepath) {writeLines('<!DOCTYPE html>\n<html>\n<head>\n<title>Project Output</title>\n</head>\n<body>', filepath)
}# 添加HTML片段
add_html_section <- function(filepath, content, section_title) {section <- paste0('\n<h2>', section_title, '</h2>\n<div>', content, '</div>')cat(section, file = filepath, append = TRUE)
}# 完成HTML文件
finalize_html <- function(filepath) {cat('\n</body>\n</html>', file = filepath, append = TRUE)
}

逐個寫入函數有局限性,需要定義好h2和子內容。

(2)在不同位置寫文檔:

 項目不同位置使用示例
output_file <- "project_output.html"# 位置1:初始化文件
init_html(output_file)# 位置2:數據分析模塊
analysis_result <- "<p>數據分析結果...</p>"
add_html_section(output_file, analysis_result, "分析報告")# 位置3:可視化模塊
plot_html <- "<img src='plot.png' alt='分析圖表'>"
add_html_section(output_file, plot_html, "可視化結果")# 位置4:最終完成
finalize_html(output_file)

3. 自由寫html文件,自定義各種標簽

如果想更自由的寫各種html標簽呢?

(1)核心函數

con <- file(outputFile, "w") #打開文件,如果想追加,使用oepn="a"
writeLines(something, con) #寫文本
close(con) #關閉文件

(2)包裝函數

# functions
html=function(text, tag, fw=con){rs=sprintf("<%s>%s</%s>", tag, text, tag)writeLines(rs, fw)
}
htmlRaw=function(text, fw=con){writeLines(text, fw)
}
# 類似的,可以包裝更多函數
h1=function(text){ html(text, "h1")}
h2=function(text){ html(text, "h2")}R2=function(num){round(num, 2)
}now=function(){as.character( format(Sys.time(), '%Y%m%d_%H%M%S') )
}

(3)用法

html("End --", "p")htmlRaw("<div class=box>")

Ref:

  • http://blog.dawneve.cc/index.php?k=R&id=0_2#26

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84752.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle 表空間超過最大限度,清理數據釋放內存

目錄 一、擴容&#xff1a;參考 https://blog.csdn.net/weixin_40841731/article/details/134931289 二、清理數據 1、查詢文件大小情況&#xff08;管理員賬號&#xff09; 2、查詢表的大小&#xff08;使用該表空間的用戶&#xff09; 3、清理數據&#xff08;使用該表空…

初版BL程序一些細節整理(碎碎念)

一.串口的中斷觸發 一般我們都是使用TXE或者RXNE來觸發中斷&#xff0c;其實還有完整傳輸結束的TC標志位和接收完成的IDLE標志位 這兩個標志位有些不同&#xff0c;RXNE標志位只需要讀取寄存器就會自行清除&#xff0c;但是這兩個需要讀取兩個&#xff0c;拿IDLE舉例子 這里需要…

為何京東與螞蟻集團競相申請穩定幣牌照?

京東與螞蟻集團競相申請穩定幣牌照&#xff0c;主要是為了搶占數字金融新賽道&#xff0c;結合香港的寬松監管政策與全球穩定幣市場的快速增長。香港2023年推出的穩定幣監管框架及2025年8月即將實施的《穩定幣條例》&#xff0c;為企業提供了合規路徑&#xff0c;吸引京東通過幣…

[特殊字符] Harmony OS Next里的Web組件:網頁加載的全流程掌控手冊

&#x1f389; Harmony OS Next里的Web組件&#xff1a;網頁加載的全流程掌控手冊 ##Harmony OS Next ##Ark Ts ##教育 本文適用于教育科普行業進行學習&#xff0c;有錯誤之處請指出我會修改。 開發者必看的生命周期回調詳解代碼實操指南 作為開發者&#xff0c;你可能經常需…

【Java學習筆記】集合介紹

集合 > > 集合的引出 在之前常使用數組存儲數據&#xff0c;存在的問題如下&#xff1a; &#xff08;1&#xff09;初始化時&#xff0c;長度必須指定&#xff0c;而且一旦指定&#xff0c;不能更改 &#xff08;2&#xff09;不方便擴容&#xff08;使用循環復制原…

電流傳感器在汽車中的應用:從BMS電池管理到電機控制的工程解析

1 電流傳感器&#xff1a;汽車電子系統的神經末梢 在現代汽車電子架構中&#xff0c;電流傳感器已從簡單的測量元件演變為??關鍵的安全與性能組件??。作為動力系統的“神經末梢”&#xff0c;它們持續采集電流參數并反饋至控制單元&#xff0c;構成??實時閉環控制的基礎…

積分商城拼團系統框架設計

一、邏輯分析 用戶相關邏輯 用戶注冊與登錄&#xff1a;用戶需要注冊賬號才能參與積分商城拼團活動。注冊過程中需收集必要信息&#xff0c;如用戶名、密碼、聯系方式等。登錄功能則用于驗證用戶身份&#xff0c;方便用戶后續操作。用戶積分管理&#xff1a;用戶通過各種途徑&a…

java 數據結構-HashMap

一、hashmap特點 1、HashMap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。 2、HashMap 實現了 Map 接口,根據鍵的 HashCode 值存儲數據,具有很快的訪問速度,最多允許一條記錄的鍵為 null,不支持線程同步。 3、HashMap 是無序的,即不會記錄插入的順序。 4、HashMa…

DBSyncer:一款開源的數據同步工具

DBSyncer&#xff08;簡稱 dbs&#xff09;是一款開源的實時數據同步中間件&#xff0c;提供 MySQL、Oracle、SQL Server、PostgreSQL、SQLite、Elasticsearch、Kafka、File、SQL 數據庫等同步場景&#xff1b;支持上傳插件自定義同步轉換業務&#xff1b;提供監控全量和增量數…

大型語言模型的中毒攻擊的系統評價

大家讀完覺得有幫助記得及時關注和點贊&#xff01;&#xff01;&#xff01; 抽象 隨著預訓練大型語言模型 &#xff08;LLM&#xff09; 及其訓練數據集的廣泛使用&#xff0c;人們對與其使用相關的安全風險的擔憂顯著增加。 這些安全風險之一是 LLM 中毒攻擊的威脅&#xff…

Windows 10更新失敗解決方法

前言 在我們使用 Windows 時的時候&#xff0c;很多時候遇到系統更新 重啟之后卻一直提示“我們無法完成更新&#xff0c;正在撤銷更改” 這種情況非常煩人&#xff0c;但其實可以通過修改文件的方法解決&#xff0c;并且正常更新到最新版操作系統 01修改注冊表 管理員身份…

Redis高級|Redis單線程VS多線程(基礎)

文章目錄 面試題Redis為什么選擇單線程為什么逐漸加入多線程特性Redis6、Redis7的多線程特性和IO多路復用入門Redis7多線程 面試題 Redis到底是單線程還是多線程&#xff1f;IO多路復用聽說過嗎&#xff1f;Redis為什么這么快&#xff1f; Redis為什么選擇單線程 其實Redis單…

ONLYOFFICE 的AI技巧-1.集成OCR、文本轉圖像、電子表格集成等新功能

隨著人工智能不斷革新數字辦公空間&#xff0c;我們通過全新的 ONLYOFFICE AI 插件再次實現突破。無論您是長期用戶還是新手&#xff0c;這些更新都將讓您的文檔處理更加智能、直觀且高效。讓我們一起來了解這些最新增強功能——部分功能已在 ONLYOFFICE 文檔 8.3.3 版本中上線…

Snipaste:一款簡單強大的跨平臺截圖工具

給大家介紹一款我在日常寫作中使用的截圖工具&#xff1a;Snipaste 。它是一個支持截圖&#xff08;Snip&#xff09;和貼圖&#xff08;Paste&#xff09;功能的免費軟件&#xff0c;支持 Windows、macOS、Linux 跨平臺。 智能截圖 Snipaste 提供了強大的截圖功能&#xff0c…

python學習打卡day52

DAY 52 神經網絡調參指南 知識點回顧&#xff1a; 隨機種子內參的初始化神經網絡調參指南 參數的分類調參的順序各部分參數的調整心得 作業&#xff1a;對于day41的簡單cnn&#xff0c;看看是否可以借助調參指南進一步提高精度。 day41的簡單CNN最后的結果&#xff0c;今天要做…

自定義線程池 4.0

自定義線程池 4.0 1. 簡介 上次我們實現了自定義線程池的 3.1 版本&#xff0c;提供了線程工廠創建線程和工具類創建簡單線程池的功能&#xff0c;增強了線程池的靈活性&#xff0c;并且用起來更加方便了&#xff0c;本文我們將做如下的優化&#xff1a; 給線程池添加關閉的…

list is not in GROUPBY clause and contains nonaggregated column ‘*.*‘

SELECT list is not in GROUP BY clause and contains nonaggregated column mydb.t.address which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 關于查詢列不在分組字段內觸發錯誤 之前我一直使用其…

Linux vmware image iso qcow2鏡像大全

Download Linux VMware Images | Linux VMware Images

城市排水管網液位流量監測系統解決方案

一、方案背景 城市排水管網作為城市的“生命線”&#xff0c;其運行狀況直接關系到城市的防洪排澇、水環境質量以及居民的生活質量。隨著城市化進程的加速&#xff0c;城市排水管網規模不斷擴大&#xff0c;結構日益復雜&#xff0c;傳統的人工巡檢和簡單監測手段已難以滿足對排…

算法學習筆記:3.廣度優先搜索 (BFS)——二叉樹的層序遍歷

什么是廣度優先搜索 (BFS)? 想象一下你在玩一個迷宮游戲&#xff0c;你需要找到從起點到終點的最短路徑。廣度優先搜索 (BFS) 就像是你在迷宮中逐層探索的過程&#xff1a; 先探索距離起點最近的所有位置然后探索距離起點第二近的所有位置以此類推&#xff0c;直到找到終點 …