社交網(wǎng)絡(luò)分析的 R 基礎(chǔ):(一)初探 R 語言

寫在前面

3 年的碩士生涯一轉(zhuǎn)眼就過去了,和社交網(wǎng)絡(luò)也打了很長時間交道涌穆。最近突然想給自己挖個坑怔昨,想給這 3 年寫個總結(jié),畫上一個句號蒲犬≈旒啵回想當(dāng)時學(xué)習(xí) R 語言時也是非常戲劇性的,開始科研生活時到處發(fā)郵件要源代碼原叮,發(fā)完最后一封本以為又是無功而返,很意外的收到了秒回的郵件巡蘸,郵件中附上了由 R 語言編寫的實驗代碼奋隶。當(dāng)時過于開心,因為終于有熱心的作者回復(fù)了悦荒,以至于沒有仔細(xì)考慮唯欣,想都沒想對著滿是警告的代碼開始了 R 語言學(xué)習(xí)之旅。之后的幾天陸陸續(xù)續(xù)的收到了其他作者的回復(fù)搬味,實驗代碼多是使用 Python 構(gòu)建的境氢,好吧只能咬咬牙繼續(xù)了。當(dāng)時的學(xué)習(xí)苦于資料太少碰纬,唯一的參考只有那份 R 語言實驗代碼萍聊,因此萌生了寫一份站在社交網(wǎng)絡(luò)分析角度的 R 語言教程≡梦觯《社交網(wǎng)絡(luò)分析的 R 基礎(chǔ)》中所介紹的內(nèi)容都是最新的技術(shù)寿桨,Visual Studio Code 在半年之前甚至無法調(diào)試 R 語言,代碼規(guī)范遵循 Google's R Style Guide强戴。該系列博客一共包含六篇文章亭螟,具體的目錄如下:

  1. 初探 R 語言
  2. 變量與字符串
  3. 向量、矩陣與列表
  4. 循環(huán)與并行
  5. 圖的導(dǎo)入與簡單分析
  6. 繪圖操作

讀研 3 年學(xué)到最重要的品質(zhì)是謙虛骑歹,《社交網(wǎng)絡(luò)分析的 R 基礎(chǔ)》這一系列博客只是將我知道的東西寫出來罷了预烙,我對這些內(nèi)容的評價是夠用,希望能夠幫助讀者快速掌握 R 語言的基礎(chǔ)道媚,之后根據(jù)實驗遇到的問題再學(xué)習(xí)其他的內(nèi)容扁掸。文章在介紹每個功能點時都附帶有簡單的示例翘县,每一章的最后還附有若干個小練習(xí),希望讀者可以借著練習(xí)幫助理解也糊。


社交網(wǎng)絡(luò)分析

過去幾十年信息技術(shù)的發(fā)展炼蹦,現(xiàn)在人們已經(jīng)生活在一個充滿各種各樣復(fù)雜網(wǎng)絡(luò)的社會。你也許無法想象人類社會和網(wǎng)絡(luò)有什么關(guān)系狸剃,舉幾個例子你就會明白掐隐,比如:使用微信或微博所涉及的社交網(wǎng)絡(luò);一到早晚高峰就堵車的城市交通路網(wǎng)钞馁;定期檢修的電網(wǎng)與自來水管網(wǎng)等等虑省。這些不同領(lǐng)域的背后都涉及到一個復(fù)雜的網(wǎng)絡(luò),而這些都屬于網(wǎng)絡(luò)科學(xué)的范疇僧凰。而社交網(wǎng)絡(luò)分析探颈,只是其中的一個方向。

社交網(wǎng)絡(luò)分析有很多應(yīng)用場景:

  1. 最常見的是購物軟件或視頻應(yīng)用中的推薦训措,通過分析一類用戶的行為去推測可能喜歡的商品或視頻伪节;
  2. 其次是識別社交網(wǎng)絡(luò)中不同的圈子,俗話說物以類聚绩鸣,人以群分怀大;
  3. 在將網(wǎng)絡(luò)劃分為不同圈子后,即可對不同的群體進(jìn)行精準(zhǔn)營銷呀闻,或者強(qiáng)化消息的傳播化借;
  4. 通過分析社交網(wǎng)絡(luò)中的關(guān)鍵節(jié)點,及時切斷關(guān)鍵節(jié)點以阻止負(fù)面信息的傳播等等捡多。

R 簡介

作為一個 R 語言的初學(xué)者蓖康,沒有人會關(guān)心 R 的發(fā)展歷史,因為學(xué)習(xí)一門語言的最終目的還是為了將其作為一種工具使用垒手。你問我知道嗎蒜焊,我當(dāng)然也不知道??。為了讓本章的內(nèi)容更加的充實淫奔,我從維基百科摘錄了一些內(nèi)容[1][2]山涡。

R 語言是一種自由軟件編程語言與操作環(huán)境,主要用于統(tǒng)計分析唆迁、繪圖以及數(shù)據(jù)挖掘鸭丛。R 本來由來自新西蘭奧克蘭大學(xué)的統(tǒng)計學(xué)家羅斯·伊哈卡和羅伯特·杰特曼開發(fā),現(xiàn)在由 R 開發(fā)核心團(tuán)隊負(fù)責(zé)開發(fā)唐责。伊哈卡與杰特曼兩人名前綴字母都是 R鳞溉,R 語言因此得名。同時鼠哥,R 這個單一字母的名字也表明 R 語言與 S 語言一脈相承熟菲。通常用 S 語言編寫的代碼都可以不作修改地在 R 環(huán)境下運行看政。R 的語法來自 Scheme。R 的后臺程序大多由 C 語言抄罕、FORTRAN 語言和 R 自己寫成允蚣。

R 語言第一次正式發(fā)布于 1995 年。第一次正式的“穩(wěn)定測試版”(v1.0)于2000年2月29日發(fā)布呆贿。

R 與 Python

根據(jù) StackOverflow 2021 年開發(fā)者報告[3]的數(shù)據(jù)來看嚷兔,排除掉“全世界都在寫前端”的這個原因,Python 當(dāng)之無愧“天下第一”的稱號做入,曾經(jīng)的“天下第一” PHP 也已經(jīng)排在了第 11 名的位置冒晰,至于 R 語言,則排在了 20 名開外竟块。那么這是不是就意味著我們要去學(xué)習(xí) Python壶运?

1.png

當(dāng)我們需要去學(xué)習(xí)一門新的編程語言時,自然是我們掌握的工具浪秘、資源已經(jīng)無法滿足解決新問題的需要蒋情,那么新學(xué)習(xí)的語言必然要擁有豐富的解決方案供我們使用。對于社交網(wǎng)絡(luò)分析而言耸携,Python 與 R 都擁有非常優(yōu)秀的類庫恕出,像 Python 中的 NetworkX[4] , R 中的 igraph[5] 违帆。但 R 語言起家于統(tǒng)計分析,因此關(guān)于數(shù)據(jù)科學(xué)的類庫也更多金蜀,對于數(shù)據(jù)分析也更優(yōu)秀些刷后,同時還可以制作精美的圖表。

其次要考慮學(xué)習(xí)成本渊抄。Python 作為一個萬金油尝胆,加上一個“容易學(xué)習(xí)”名頭,足以吸引大部分人的目光护桦。但是我認(rèn)為初學(xué) Python 上手很慢含衔,Python 豐富的語法糖特性很容易造成初學(xué)者理解困難。R 作為一個面向?qū)ο蟮恼Z言二庵,但由于其存在不同實現(xiàn)面向?qū)ο蟮念愋停⊿3贪染、S4……),某種程度上來說 R 的面向?qū)ο蟛粡?qiáng)催享。對初學(xué)者來說杭隙,面向?qū)ο笸ǔ:茈y理解,而 R 語言常用的功能大部分是以函數(shù)提供的因妙,很容易實現(xiàn)面向過程的編程痰憎,這樣就能專注于解決問題本身票髓,而不是去弄明白程序為什么要這么寫。

最終不管是選擇 R 還是 Python 铣耘,解決問題是關(guān)鍵洽沟,語言只不過是過程中的一個工具。如果你有 Python 基礎(chǔ)蜗细,好好學(xué)習(xí) NetworkX 包就能達(dá)到目的裆操;如果你其他語言基礎(chǔ)較弱,也不清楚什么是面向?qū)ο篥Γ敲?R 語言可能是更好的選擇跷车。

安裝 R

CRAN

在安裝 R 之前,首先要簡單了解一下 CRAN 橱野。CRAN(Comprehensive R Archive Network)是 R 的源代碼朽缴、文檔以及各種包的托管,R 的安裝包也需要通過 CRAN 下載水援。通常各所大學(xué)都會提供 CRAN 的鏡像密强, CRAN 所有的鏡像列表可通過此網(wǎng)站獲得:https://cran.r-project.org 。選擇下載相應(yīng)平臺的安裝包即可蜗元。

2.png

???提示
Microsoft 也提供了 R 的發(fā)行版 Microsoft R Open或渤,增強(qiáng)了計算性能。項目地址:https://mran.microsoft.com/open

Windows 設(shè)置環(huán)境變量

R 在 Windows 下安裝完成是不設(shè)置環(huán)境變量的奕扣,也就是說沒法隨時隨地在命令行中優(yōu)雅的執(zhí)行 R 腳本薪鹦。我們需要手動設(shè)置一下:

  1. Windows 搜索欄中搜索“編輯系統(tǒng)環(huán)境變量”,打開“環(huán)境變量”惯豆,如圖中①池磁;
  2. 編輯“系統(tǒng)變量”中的“Path”,如圖中②楷兽;
  3. 新建一個環(huán)境變量地熄,將 R 安裝位置的 bin 文件夾添加進(jìn)去,如圖中③芯杀。
3.png

設(shè)置完成后就可以進(jìn)入 R 終端了端考。

4.png

在 Visual Studio Code 中進(jìn)行 R 編程

R 安裝完成后會附帶一個 RGui ,相對來說比較簡陋揭厚,用戶通常會單獨安裝一個 RStudio 作為 R 默認(rèn)的 IDE 却特。這里為了輕量化,選擇了 Visual Studio Code 作為 R 語言的編輯器棋弥。

  1. 在安裝完 Visual Studio Code 后打開“擴(kuò)展”核偿,搜索“R”,安裝插件顽染;

    5.png
  2. 在 R 終端中安裝包“l(fā)anguageserver”漾岳,以提供文檔和代碼補(bǔ)全轰绵;

    > chooseCRANmirror()    # 下載困難時可以先選擇 CRAN 鏡像
    > install.packages("languageserver")
    
    6.png
  3. 打開 VS Code,新建一個文件“hello.R”尼荆,鍵入左腔;

    print("Social Network Analysis")
    
  4. 選中要運行的代碼,按“Ctrl+Enter”運行代碼片段捅儒。

    7.png

R 的調(diào)試

調(diào)試是發(fā)現(xiàn)程序錯誤和保證程序正確運行的一個必要環(huán)節(jié)液样。在 Visual Studio Code 對 R 進(jìn)行調(diào)試還需要安裝一個擴(kuò)展 R Debugger

8.png

擴(kuò)展安裝完成后打開側(cè)邊欄中的“運行與調(diào)試”巧还,并在程序想要中斷的位置打上斷點(行號左側(cè))鞭莽。

9.png

點擊“運行和調(diào)試”即可開始調(diào)試,左側(cè)會展示相關(guān)變量的值麸祷。

10.png

到這里即可愉快的開啟 R 語言之旅了澎怒。

???提示
R 語言社區(qū)包含了許多入門文檔:https://cran.r-project.org/doc

???練習(xí)

  1. 試著安裝一下網(wǎng)絡(luò)分析包 “igraph”;
  2. 隨便在 R 終端中寫點代碼阶牍,試試 "a"+"b" 會輸出 ab 嗎喷面;
  3. 試著將 R 終端當(dāng)作計算器使用。

參考

  1. <a id="1" target="_blank" >R (programming language) - Wikipedia</a>
  2. <a id="2" target="_blank" >R 語言 - 維基百科</a>
  3. <a id="3" target="_blank" >Stack Overflow Developer Survey 2021</a>
  4. <a id="4" target="_blank" >NetworkX</a>
  5. <a id="5" target="_blank" >igraph</a>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末走孽,一起剝皮案震驚了整個濱河市惧辈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磕瓷,老刑警劉巖盒齿,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異困食,居然都是意外死亡县昂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門陷舅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人审洞,你說我怎么就攤上這事莱睁。” “怎么了芒澜?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵仰剿,是天一觀的道長。 經(jīng)常有香客問我痴晦,道長南吮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任誊酌,我火速辦了婚禮部凑,結(jié)果婚禮上露乏,老公的妹妹穿的比我還像新娘。我一直安慰自己涂邀,他們只是感情好瘟仿,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著比勉,像睡著了一般劳较。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浩聋,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天观蜗,我揣著相機(jī)與錄音,去河邊找鬼衣洁。 笑死墓捻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闸与。 我是一名探鬼主播毙替,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼践樱!你這毒婦竟也來了厂画?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后霍狰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體战授,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年纪蜒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡欲虚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悔雹,到底是詐尸還是另有隱情复哆,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布腌零,位于F島的核電站梯找,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏益涧。R本人自食惡果不足惜锈锤,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧久免,春花似錦浅辙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丁寄,卻和暖如春氨淌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伊磺。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工盛正, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屑埋。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓豪筝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摘能。 傳聞我的和親對象是個殘疾皇子续崖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容