寫在前面
3 年的碩士生涯一轉眼就過去了,和社交網路也打了很長時間交道,最近突然想給自己挖個坑,想給這 3 年寫個總結,畫上一個句號,回想當時學習 R 語言時也是非常戲劇性的,開始科研生活時到處發郵件要源代碼,發完最后一封本以為又是無功而返,很意外的收到了秒回的郵件,郵件中附上了由 R 語言撰寫的實驗代碼,當時過于開心,因為終于有熱心的作者回復了,以至于沒有仔細考慮,想都沒想對著滿是警告的代碼開始了 R 語言學習之旅,之后的幾天陸陸續續的收到了其他作者的回復,實驗代碼多是使用 Python 構建的,好吧只能咬咬牙繼續了,當時的學習苦于資料太少,唯一的參考只有那份 R 語言實驗代碼,因此萌生了寫一份站在社交網路分析角度的 R 語言教程,《社交網路分析的 R 基礎》中所介紹的內容都是最新的技術,Visual Studio Code 在半年之前甚至無法除錯 R 語言,代碼規范遵循 Google's R Style Guide,該系列博客一共包含六篇文章,具體的目錄如下:
- 初探 R 語言
- 社交網路分析
- R 簡介
- R 與 Python
- 安裝 R
- CRAN
- Windows 設定環境變數
- 在 Visual Studio Code 中進行 R 編程
- R 的除錯
- 變數與字串
- 變數
- 字串
- 字串的創建
- 特殊字符的轉義
- 字串的其他常用操作
- 向量、矩陣與串列
- 向量
- 向量的創建
- 向量元素的訪問
- 向量的運算
- 向量的其他常用操作
- 矩陣
- 矩陣的創建
- 矩陣元素的訪問
- 矩陣的運算
- 矩陣的特征值與特征向量
- 串列
- 串列的創建
- 串列元素的訪問
- 向量
- 回圈與并行
- 回圈陳述句
- while
- for
- 回圈控制
- apply() 系列函式
- apply()
- sapply()
- 使用 parallel 包并行處理
- 在本機上并行
- 在多臺計算機上并行
- 回圈陳述句
- 圖的匯入與簡單分析
- 圖的檔案表示
- 匯入一個圖
- 生成人工網路
- 圖的基本分析
- 繪圖操作
- 柱狀圖
- 折線圖
- 保存繪制的圖表
讀研 3 年學到最重要的品質是謙虛,《社交網路分析的 R 基礎》這一系列博客只是將我知道的東西寫出來罷了,我對這些內容的評價是夠用,希望能夠幫助讀者快速掌握 R 語言的基礎,之后根據實驗遇到的問題再學習其他的內容,文章在介紹每個功能點時都附帶有簡單的示例,每一章的最后還附有若干個小練習,希望讀者可以借著練習幫助理解,
- 社交網路分析
- R 簡介
- R 與 Python
- 安裝 R
- CRAN
- Windows 設定環境變數
- 在 Visual Studio Code 中進行 R 編程
- R 的除錯
社交網路分析
過去幾十年資訊技術的發展,現在人們已經生活在一個充滿各種各樣復雜網路的社會,你也許無法想象人類社會和網路有什么關系,舉幾個例子你就會明白,比如:使用微信或微博所涉及的社交網路;一到早晚高峰就堵車的城市交通路網;定期檢修的電網與自來水管網等等,這些不同領域的背后都涉及到一個復雜的網路,而這些都屬于網路科學的范疇,而社交網路分析,只是其中的一個方向,
社交網路分析有很多應用場景:
- 最常見的是購物軟體或視頻應用中的推薦,通過分析一類用戶的行為去推測可能喜歡的商品或視頻;
- 其次是識別社交網路中不同的圈子,俗話說物以類聚,人以群分;
- 在將網路劃分為不同圈子后,即可對不同的群體進行精準營銷,或者強化訊息的傳播;
- 通過分析社交網路中的關鍵節點,及時切斷關鍵節點以阻止負面資訊的傳播等等,
R 簡介
作為一個 R 語言的初學者,沒有人會關心 R 的發展歷史,因為學習一門語言的最終目的還是為了將其作為一種工具使用,你問我知道嗎,我當然也不知道??,為了讓本章的內容更加的充實,我從維基百科摘錄了一些內容[1][2],
R 語言是一種自由軟體編程語言與操作環境,主要用于統計分析、繪圖以及資料挖掘,R 本來由來自新西蘭奧克蘭大學的統計學家羅斯·伊哈卡和羅伯特·杰特曼開發,現在由 R 開發核心團隊負責開發,伊哈卡與杰特曼兩人名前綴字母都是 R,R 語言因此得名,同時,R 這個單一字母的名字也表明 R 語言與 S 語言一脈相承,通常用 S 語言撰寫的代碼都可以不作修改地在 R 環境下運行,R 的語法來自 Scheme,R 的后臺程式大多由 C 語言、FORTRAN 語言和 R 自己寫成,
R 語言第一次正式發布于 1995 年,第一次正式的“穩定測驗版”(v1.0)于2000年2月29日發布,
R 與 Python
根據 StackOverflow 2021 年開發者報告[3]的資料來看,排除掉“全世界都在寫前端”的這個原因,Python 當之無愧“天下第一”的稱號,曾經的“天下第一” PHP 也已經排在了第 11 名的位置,至于 R 語言,則排在了 20 名開外,那么這是不是就意味著我們要去學習 Python?

當我們需要去學習一門新的編程語言時,自然是我們掌握的工具、資源已經無法滿足解決新問題的需要,那么新學習的語言必然要擁有豐富的解決方案供我們使用,對于社交網路分析而言,Python 與 R 都擁有非常優秀的類別庫,像 Python 中的 NetworkX[4] , R 中的 igraph[5] ,但 R 語言起家于統計分析,因此關于資料科學的類別庫也更多,對于資料分析也更優秀些,同時還可以制作精美的圖表,
其次要考慮學習成本,Python 作為一個萬金油,加上一個“容易學習”名頭,足以吸引大部分人的目光,但是我認為初學 Python 上手很慢,Python 豐富的語法糖特性很容易造成初學者理解困難,R 作為一個面向物件的語言,但由于其存在不同實作面向物件的型別(S3、S4……),某種程度上來說 R 的面向物件不強,對初學者來說,面向物件通常很難理解,而 R 語言常用的功能大部分是以函式提供的,很容易實作面向程序的編程,這樣就能專注于解決問題本身,而不是去弄明白程式為什么要這么寫,
最終不管是選擇 R 還是 Python ,解決問題是關鍵,語言只不過是程序中的一個工具,如果你有 Python 基礎,好好學習 NetworkX 包就能達到目的;如果你其他語言基礎較弱,也不清楚什么是面向物件,那么 R 語言可能是更好的選擇,
安裝 R
CRAN
在安裝 R 之前,首先要簡單了解一下 CRAN ,CRAN(Comprehensive R Archive Network)是 R 的源代碼、檔案以及各種包的托管,R 的安裝包也需要通過 CRAN 下載,通常各所大學都會提供 CRAN 的鏡像, CRAN 所有的鏡像串列可通過此網站獲得:https://cran.r-project.org ,選擇下載相應平臺的安裝包即可,

?? 提示
Microsoft 也提供了 R 的發行版 Microsoft R Open,增強了計算性能,專案地址:https://mran.microsoft.com/open
Windows 設定環境變數
R 在 Windows 下安裝完成是不設定環境變數的,也就是說沒法隨時隨地在命令列中優雅的執行 R 腳本,我們需要手動設定一下:
- Windows 搜索欄中搜索“編輯系統環境變數”,打開“環境變數”,如圖中①;
- 編輯“系統變數”中的“Path”,如圖中②;
- 新建一個環境變數,將 R 安裝位置的 bin 檔案夾添加進去,如圖中③,

設定完成后就可以進入 R 終端了,

在 Visual Studio Code 中進行 R 編程
R 安裝完成后會附帶一個 RGui ,相對來說比較簡陋,用戶通常會單獨安裝一個 RStudio 作為 R 默認的 IDE ,這里為了輕量化,選擇了 Visual Studio Code 作為 R 語言的編輯器,
-
在安裝完 Visual Studio Code 后打開“擴展”,搜索“R”,安裝插件;

-
在 R 終端中安裝包“languageserver”,以提供檔案和代碼補全;
> chooseCRANmirror() # 下載困難時可以先選擇 CRAN 鏡像 > install.packages("languageserver")
-
打開 VS Code,新建一個檔案“hello.R”,鍵入;
print("Social Network Analysis") -
選中要運行的代碼,按“Ctrl+Enter”運行代碼片段,

R 的除錯
除錯是發現程式錯誤和保證程式正確運行的一個必要環節,在 Visual Studio Code 對 R 進行除錯還需要安裝一個擴展 R Debugger ,

擴展安裝完成后打開側邊欄中的“運行與除錯”,并在程式想要中斷的位置打上斷點(行號左側),

點擊“運行和除錯”即可開始除錯,左側會展示相關變數的值,

到這里即可愉快的開啟 R 語言之旅了,
?? 提示
R 語言社區包含了許多入門檔案:https://cran.r-project.org/doc
?? 練習
1. 試著安裝一下網路分析包 “igraph”;
2. 隨便在 R 終端中寫點代碼,試試 "a"+"b" 會輸出 ab 嗎;
3. 試著將 R 終端當作計算器使用,
參考
- R (programming language) - Wikipedia
- R 語言 - 維基百科
- Stack Overflow Developer Survey 2021
- NetworkX
- igraph
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/423372.html
標籤:其他
上一篇:python pyautogui
下一篇:python基礎
