R語言筆記1:數據類型(向量、數組、矩陣、 列表和數據框)

2021-02-15 宏基因組

宏基因組按:科研中數據分析解讀佔用了我們太多時間,學習R語言是生物測序領域數據(reads count表)分析及可視化的首選。舉個例子,擴增子分析從fastq到OTU表至多是de novo或reference兩種套路(1-3天)。而對OTU表開始的組間比較、網絡分析、機器學習等會有上百種方法和展示方式,每一篇優秀的文章,都是數據反覆咀嚼上百次優化出來的結果(3個月-3年),而這一漫長的科研之路有R語言技能的相伴,可將統計分析可視化操作一網打盡,定能助你事半功倍。

前期公眾號己分享了擴增子、宏基因組分析流程及可視化文章上百篇,但一直缺少基礎入門的知識。今天起分享一位從18年3月1號剛要從wet轉dry的學生零基礎學習筆記,供初學者學習,雖然筆記會有不系統的地方,但也正是初學者需要經歷和面對的,希望想入行的快上車,共同學習,一起成長。

學習R語言,需要先安裝R語言,只需要從 https://www.r-project.org/ 下載適合你系統的最新版本軟體安裝即可。R語言有個優秀的環境叫Rstudio,具體安裝可參考  《R語言學習 - 入門環境Rstudio》一文。

R語言中的數據類型(Data Types)

R語言的對象(Objects)主要包括向量、矩陣、數組、數據框和列表。

R語言的對象有五種最基本的類型,即,字符型(character)、數值型(numeric,包括小數)、整型(integer)、複數型(complex)以及邏輯型(logical,TRUE/FALSE)

屬性是R語言對象的一部分。主要包括以下幾種:名字(names,dimnames),維度(dimensions,包括矩陣等),類別(class,包括數字、整數等),長度(length),以及其他。可通過 attributes()函數查看對象的屬性,不是所有對象都有屬性,如果沒有則返回NULL。

1. 向量

向量(vector)是R語言中最基本的數據類型,執行組合功能的函數 c()可用來創建向量。

各類向量如下例所示:

a <- c (1, 2, 7, -4, 5)            ## numeric

b <- c ("Rice", "Wheat")           ## character

c <- c (TRUE, TRUE, FALSE, TRUE)   ## logical

d <- c (1+0i, 2+4i)                ## complex

e <- c (9:17)                      ## integer

注意:單個向量中的數據必須擁有相同的類型(數值型、字符型或邏輯型)。

創建空向量可以使用 vector()函數。例如創建一個指定長度為10、類型為數值型的空向量:

> x <- vector("numeric", length = 10)

> x

[1] 0 0 0 0 0 0 0 0 0 0

另外,標量是只含一個元素的向量,它們用於保存常量。例如

f <- 3

g <- "US"

h <- TRUE

2. 矩陣

矩陣(matrice)是具有維度屬性的向量,矩陣都是二維的,和向量類似,矩陣中也僅能包含一種數據類型。

主要有三種創建矩陣的方法:

(1)直接創建

例:數字1-20自動創建為一個5行4列的矩陣,自動填充第一列之後開始填充第二列

y <- matrix(1:20, nrow = 5, ncol = 4)

> y

    [,1] [,2] [,3] [,4]

[1,]    1    6   11   16

[2,]    2    7   12   17

[3,]    3    8   13   18

[4,]    4    9   14   19

[5,]    5   10   15   20

> dim(y)                          

[1] 5 4                            ##dim()看維度,5行4列

(2)矢量+維度向量

添加維度向量 dim()是將矢量轉變為矩陣的方法

> m <- c(1:10)

> m

[1]  1  2  3  4  5  6  7  8  9 10

> dim(m) <- c(2,5)                   ##2行5列          

> m

    [,1] [,2] [,3] [,4] [,5]

[1,]    1    3    5    7    9

[2,]    2    4    6    8   10

(3)綁定行或列來創建矩陣

綁定行或綁定列可以通過 cbind()和 rbind()來實現

> x <- 1:3

> y <- 10:12

> cbind (x, y)

    x  y

[1,] 1 10

[2,] 2 11

[3,] 3 12

> rbind (x, y)

 [,1] [,2] [,3]

x    1    2    3

y   10   11   12

3. 數組

數組(array)與矩陣類似,但是維度可以大於2。數組可通過array函數創建。

4. 列表

列表(list)是一種可包含多種不同類型對象的向量,是一些對象(或成分,component)的有序集合。

> x <- list(1, "a", TRUE, 1 + 4i)

> x

[[1]]

[1] 1

[[2]]

[1] "a"

[[3]]

[1] TRUE

[[4]]

[1] 1+4i

5.數據框

數據框(Data Frames)是一種特殊的列表,其中所用元素長度都相等,列表中的每個元素都可以看作一列,每個元素的長度可以看作行數。

創建顯式數據框的方法是 data.frame()

> ID <- c(1,2,3,4)

> age <- c(25,26,55,43)

> diabetes <- c("Type1","Type2","Type3","Type1")

> status <- c("Poor", "Improved", "Excellent","Poor")

> data <- data.frame(ID, age, diabetes, status)

> data

 ID age diabetes    status

1  1  25    Type1      Poor

2  2  26    Type2  Improved

3  3  55    Type3 Excellent

4  4  43    Type1      Poor

參考資料:

https://bookdown.org/rdpeng/rprogdatascience/R Programming for Data Science

《R語言實戰》 Robert I. Kabacoff

猜你喜歡寫在後面

為鼓勵讀者交流、快速解決科研困難,我們建立了「宏基因組」專業討論群,目前己有國內外120+ PI,1200+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入群,務必備註「姓名-單位-研究方向-職稱/年級」。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍末解決群內討論,問題不私聊,幫助同行。

學習16S擴增子、宏基因組科研思路和分析實戰,關注「宏基因組」

相關焦點

  • r語言work_r語言work函數 - CSDN
    R是一套完整的數據處理、計算和製圖軟體系統。其功能包括:數據存儲和處理系統;數組運算工具(其向量、矩陣運算方面功能尤其強大);完整連貫的統計分析工具;優秀的統計製圖功能;簡便而強大的程式語言:可操縱數據的輸入和輸入,可實現分支、循環,用戶可自定義功能。
  • R數據分析:創建向量的方法
    在R語言中,向量(Vector)是相同基本類型元素組成的序列,相當於一維數組。向量的元素可以是數值型、字符型、邏輯值型和複數型,對應分別稱為數值型向量、字符串型向量、邏輯型向量和複數型向量。向量中可以包含一個元素,也可以包含多個元素。同一個向量中的數據類型應該相同。
  • R語言中幾種常見的創建矩陣的形式
    矩陣概述在R語言中,矩陣(matrix)是將數據按行和列組織數據的一種數據對象,相當於二維數組,可以用於描述二維的數據。與向量相似,矩陣的每個元素都擁有相同的數據類型。通常用列來表示來自不同變量的數據,用行來表示相同的數據。
  • python數據類型總結——列表
    python用列表或元組來幫助我們。python列表一系列元素組成一個集合,可能通過索引,對每個元素進行訪問。這種數據類型統稱為序列。在python中,字符串就是一種序列。如果你有其它語言的基礎,知道二維數組或者多維數組,那麼,對嵌套列表就不會陌生。
  • Python之list列表數據類型講解
    前言在python中,list列表數據類型其實就是一個容器,可以放置大量元素的集合。同時,list列表也有很多特點和使用場景,本文主要講解list列表的函數方法。概念list列表是一個集合,一個容器,同Java語言中的數組是一樣的,唯一的不同之處在於,Java中的數組類型只能放置同一種數據類型,而Python中的列表可以放置不同的數據類型。
  • 可視化介紹:NumPy和機器學習數據表示
    在最流行的三大數據處理棧R、Matlab和Python中,NumPy是最重要的組件之一,有很多Python系的數據處理系統都依賴NumPy作為其基礎架構的基礎部分,比如tensorflow、pandas、SciPy和scikit-learn等。NumPy極大地簡化了向量和矩陣的操作和處理。
  • R語言中獲取矩陣中元素的幾種形式
    #輸出矩陣m1中第2行的數據(3)矩陣名[ , 列位置] 獲取某一列的所有元素m1[ ,2] #輸出矩陣m1中第2列的所有元素以上三種情況的執行結果如下圖所示:使用向量訪問若干行或若干列(4)矩陣名[向量1,向量2] 獲取向量1表示的行集和向量2表示的列集交叉處的數據m1[c(1,2),c(1,3)]
  • 數據分析-numpy庫快速了解
    可用來存儲和處理大型矩陣,比Python自身的嵌套列表結構要高效的多,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據 設置專門的數組對象,經過優化,可以提升這類應用的運算速度觀察:科學計算中,一個維度所有數據的類型往往相同 數組對象採用相同的數據類型,有助於節省運算和存儲空間具體可以看下面一個例子:(來源嵩天老師案例)3.numpy庫怎麼使用先安裝numpy
  • 有關 NumPy 和數據表達的可視化介紹
    來源:Pexels在 Python 的生態環境中, NumPy 包是數據分析、機器學習和科學計算的主力軍。它大大簡化了向量和矩陣的操作及處理過程。假設 data * 1.6:索引通過所有能夠對Python列表切片(slice)的方式,能夠對NumPy數組進行索引和切片:聚合NumPy的優勢還在於提供聚合函數:除了min、max和 sum這些函數,用mean可以計算平均值,用prod可以得到所有元素相乘的結果,用std可以得到標準差,以及其他函數等等。
  • 機器學習第一步,從向量和矩陣開始!
    你的絆腳石或許不僅僅是對於Python語法的陌生,還有對於數據集的處理摸不著頭腦。這時候,就需要我們回歸基本概念——從向量、矩陣開始,讀懂機器學習語言。雖然在不同語境下,向量的意義各不相同,但並不妨礙我們將其歸納為含有數量級與方向的量。這樣一來,向量便能搭載著數據的邏輯關係及權重,從而讓數據集被輸入編碼器,形成數組,隨之進入神經網絡模型運算。而這個龐大的數組,通常以矩陣的方式出現。
  • 數據可視化之R語言
    3.折線圖折線圖對於分類數據和連續型數據都適用,如果數據為連續數據,則使用plot()命令就可實現,只要設置type=選項即可,如:> plot(Nile,type="l")如果數據的順序是任意的,那麼做出的折線也是任意的,這樣無法觀察趨勢
  • 一鍵獲取新技能,玩轉NumPy數據操作
    大數據文摘出品編譯:李雷、寧靜NumPy是Python中用於數據分析、機器學習、科學計算的重要軟體包。它極大地簡化了向量和矩陣的操作及處理。python的不少數據處理軟體包依賴於NumPy作為其基礎架構的核心部分(例如scikit-learn、SciPy、pandas和tensorflow)。
  • 圖解NumPy,這是理解數組最形象的一份教程了
    選自Jay Alammar Blog作者:Jay Alammar機器之心編譯參與:高璇、路本文用可視化的方式介紹了 NumPy 的功能和使用示例。NumPy 軟體包是 Python 生態系統中數據分析、機器學習和科學計算的主力軍。它極大地簡化了向量和矩陣的操作處理。
  • MATLAB數組的常用函數
    dot(x, y)向量x和y的內積sort(x)對向量x的元素進行排序cross(x, y)向量x和y的外積【例2-9】  數組運算示例。查詢矩陣信息在矩陣的使用過程中,經常需要查詢某個矩陣的一些基本信息,比如行數、列數、總元素個數、各元素的數據類型等,這就需要我們掌握矩陣信息查詢函數。4.1 矩陣的形狀信息表2-5中的函數,可以用來查詢一個矩陣形狀的信息。
  • 看圖學NumPy:掌握n維數組基礎知識點,看這一篇就夠了
    教程內容分為向量 (一維數組)、矩陣 (二維數組)、三維與更高維數組3個部分。Numpy數組與Python列表在介紹正式內容之前,先讓我們先來了解一下Numpy數組與Python列表的區別。乍一看,NumPy數組類似於Python列表。
  • 【ADAMS】矩陣/數組函數
    矩陣/數組函數可很方便地完成針對矩陣/數組的操作。(1)矩陣/數組的基本操作函數ALIGN 將數組轉換到從特定值開始ALLM 返回矩陣元素的邏輯值ANGLES 將方向餘弦矩陣轉換為指定旋轉順序下的角度矩陣ATAN(x) 數字表達式x 的反正切值ATAN2(x1,x2) 兩個數字表達式x1,x2 的四象限反正切值(3)取整函數INT(x)
  • R語言-stringr-字符串處理
    ,不用轉義路徑複製和直接可用charchar <- r"(我是一名'R語言'學習者)"cat(char)常用函數截取字符串,匹配字符串,添加指定字符籌齊長度,去除左右兩邊空格,分割字符串,str_extract_all()str_extract()函數返回向量,str_match()函數返回矩陣.
  • 快速掌握R語言中類SQL資料庫操作技巧
    (本章節為R語言入門第二部分總結篇:數據操作)本章內容布局思路:思來想後,想到SQL查詢的查詢思路可以作為本章節的布局思路2.對表中的一些數據做出修改、替換、甚至生成新欄位1.1 向量 Vector : c()1.2 矩陣 Matrix: matrix()1.3 數據框 DataFrame: data.frame
  • R語言之矩陣操作
    R語言作為一門統計語言,肯定缺少不了矩陣處理。