国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學習筆記Day3:數(shù)據(jù)框、矩陣和列表

這篇具有很好參考價值的文章主要介紹了學習筆記Day3:數(shù)據(jù)框、矩陣和列表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據(jù)結構之數(shù)據(jù)框、矩陣和列表

要經(jīng)常檢查代碼生成的結果,警惕不報錯的錯誤

向量:一維

表格:二維

列表:三維

判斷數(shù)據(jù)結構:class()或is族函數(shù)判斷,或根據(jù)其生成的函數(shù)來判斷

數(shù)據(jù)框(Data.frame)

二維,每列只允許一種數(shù)據(jù)類型

數(shù)據(jù)框來源

  1. 用代碼新建
  2. 由已有數(shù)據(jù)轉換或處理得到
  3. 讀取表格文件
  4. R語言內(nèi)置數(shù)據(jù)(iris,volcano等)

數(shù)據(jù)框新建

data.frame()

變量名稱只起到提示作用,不起決定作用

df1 <- data.frame(gene   = paste0("gene",1:4),
                 change  = rep(c("up","down"),each = 2),
                 score   = c(5,3,-2,-4))
df1
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4

df2 <- read.csv("gene.csv")   #讀取文件

數(shù)據(jù)框屬性

dim()維度(dimension)

nrow()行;rownames()行名

ncol()列;colnames()列名

數(shù)據(jù)框取子集

  1. 取某一列:$取數(shù)據(jù)框中的一列,按Tab鍵自動補齊

    df1$score
    
    ## [1]  5  3 -2 -4
    
  2. 按坐標:[行號,列號]

    df1[2,2]
    ## [1] "up"
    df1[2,]
    ##    gene change score
    ## 2 gene2     up     3
    df1[,2]
    ## [1] "up"   "up"   "down" "down"
    df1[c(1,3),1:2]
    ##    gene change
    ## 1 gene1     up
    ## 3 gene3   down
    
  3. 按名字:[行名,列名]

    ## 按名字
    df1[,"gene"]
    ## [1] "gene1" "gene2" "gene3" "gene4"
    df1[,c('gene','change')]   ##可以按名字同時取多列,使代碼變得易讀
    ##    gene change
    ## 1 gene1     up
    ## 2 gene2     up
    ## 3 gene3   down
    ## 4 gene4   down
    
  • 中括號里的逗號,表示維度的分割

數(shù)據(jù)框修改

  1. 修改:將需要修改的內(nèi)容提取后進行重新賦值

    df1[3,3] <- 5
    df1
    ##    gene change score
    ## 1 gene1     up     5
    ## 2 gene2     up     3
    ## 3 gene3   down     5
    ## 4 gene4   down    -4
    
    
    df1$score <- c(12,23,50,2)     
    df1
    ##    gene change score
    ## 1 gene1     up    12
    ## 2 gene2     up    23
    ## 3 gene3   down    50
    ## 4 gene4   down     2
    
  2. 新建:$后接尚未存在的列名,即是新建列

    df1$p.value <- c(0.01,0.02,0.07,0.05) 
    df1
    ##    gene change score p.value
    ## 1 gene1     up    12    0.01
    ## 2 gene2     up    23    0.02
    ## 3 gene3   down    50    0.07
    ## 4 gene4   down     2    0.05
    
  3. 修改列名或行名

    將行名和列名視為向量去做修改

    #改行名和列名
    rownames(df1) <- c("r1","r2","r3","r4")
    #只修改某一行/列的名
    colnames(df1)[2] <- "CHANGE"
    

兩個數(shù)據(jù)框的連接

  1. 兩個數(shù)據(jù)框根據(jù)有交集的一列合并(取交集)

    test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                        blood_type = c("A","B","O","AB"))
    test1
    ##     name blood_type
    ## 1  jimmy          A
    ## 2 nicker          B
    ## 3  Damon          O
    ## 4 Sophie         AB
    
    test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),
                        group = c("group1","group1","group2","group2"),
                        vision = c(4.2,4.3,4.9,4.5))
    test2
    ##     name  group vision
    ## 1  Damon group1    4.2
    ## 2  jimmy group1    4.3
    ## 3 nicker group2    4.9
    ## 4   tony group2    4.5
    
    
    merge(test1,test2,by="name")
    ##     name blood_type  group vision
    ## 1  Damon          O group1    4.2
    ## 2  jimmy          A group1    4.3
    ## 3 nicker          B group2    4.9
    
    test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                        weight = c(140,145,110,138))
    test3
    ##     NAME weight
    ## 1  Damon    140
    ## 2  jimmy    145
    ## 3 nicker    110
    ## 4   tony    138
    
    merge(x=test1,x=test3,by.x = "name",by.y = "NAME")
    ##     name blood_type weight
    ## 1  Damon          O    140
    ## 2  jimmy          A    145
    ## 3 nicker          B    110
    
  2. 取合集:查看幫助文檔

  • 代碼和數(shù)據(jù)不匹配:改數(shù)據(jù)/改代碼

數(shù)據(jù)框按照邏輯值取子集【有點難】

df1 <- data.frame(gene   = paste0("gene",1:4),
                  change  = rep(c("up","down"),each = 2),
                  score   = c(5,3,-2,-4))
k = df1$score>0;k
## [1]  TRUE  TRUE FALSE FALSE
df1[k,]
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
  • 將滿足K這一條件的行提取出來。
    學習筆記Day3:數(shù)據(jù)框、矩陣和列表,丘山的讀書筆記,學習,筆記,r語言,數(shù)據(jù)分析
    篩選score > 0的基因,如下兩種寫法
df1[k,1]
## [1] "gene1" "gene2"
df1$gene[k]
## [1] "gene1" "gene2"
df1$gene[df1$score>0]
## [1] "gene1" "gene2"

矩陣(Matrix)

二維,只允許一種數(shù)據(jù)類型

矩陣新建和取子集

  1. 新建:matrix(), nrow/ncol設置行數(shù)或列數(shù)

    m <- matrix(1:9, nrow = 3)
    colnames(m) <- c("a","b","c") #加列名
    m
    ##      a b c
    ## [1,] 1 4 7
    ## [2,] 2 5 8
    ## [3,] 3 6 9
    
  2. 取子集與數(shù)據(jù)框相同

    m[2,]
    ## a b c 
    ## 2 5 8
    m[,1]
    ## [1] 1 2 3
    m[2,3]
    ## c 
    ## 8
    m[2:3,1:2]
    ##      a b
    ## [1,] 2 5
    ## [2,] 3 6
    

矩陣的轉置和轉換

  1. 轉置:t()以1 5 9為中軸轉置

    m
    ##      a b c
    ## [1,] 1 4 7
    ## [2,] 2 5 8
    ## [3,] 3 6 9
    t(m)
    ##   [,1] [,2] [,3]
    ## a    1    2    3
    ## b    4    5    6
    ## c    7    8    9
    
  2. 轉換:所有矩陣可以轉換成數(shù)據(jù)框as.data.frame()

    as.data.frame(m)
    ##   a b c
    ## 1 1 4 7
    ## 2 2 5 8
    ## 3 3 6 9
    
    • 沒有賦值就沒有發(fā)生變化!運行完as.data.frame(m)后m還是矩陣

矩陣畫熱圖

熱圖函數(shù)heatmap需求矩陣數(shù)據(jù)類型

pheatmap::pheatmap(m)

學習筆記Day3:數(shù)據(jù)框、矩陣和列表,丘山的讀書筆記,學習,筆記,r語言,數(shù)據(jù)分析

  • 熱圖給數(shù)據(jù)進行了聚類,將相似性高的行/列放在一起展示。這是該函數(shù)的默認值。
pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)

學習筆記Day3:數(shù)據(jù)框、矩陣和列表,丘山的讀書筆記,學習,筆記,r語言,數(shù)據(jù)分析

  • 更改參數(shù)后,此時圖和矩陣完全一致。
  • 當默認不符合預期時,可以在作者允許的范圍內(nèi)自定義。

列表(List)

列表新建和取子集

  1. 新建:list(),列表的每個元素可以是任何數(shù)據(jù)結構和類型

    x <- list(m1 = matrix(1:9, nrow = 3),
              m2 = matrix(2:9, nrow = 2))
    x
    ## $m1
    ##      [,1] [,2] [,3]
    ## [1,]    1    4    7
    ## [2,]    2    5    8
    ## [3,]    3    6    9
    ## 
    ## $m2
    ##      [,1] [,2] [,3] [,4]
    ## [1,]    2    4    6    8
    ## [2,]    3    5    7    9
    
  2. 取子集:[[]]$

    • [[]]中接元素的序號或名字

      x[[1]]
      ##      [,1] [,2] [,3]
      ## [1,]    1    4    7
      ## [2,]    2    5    8
      ## [3,]    3    6    9
      
    • $后接元素名字,可以tab補齊

      x$m1
      ##      [,1] [,2] [,3]
      ## [1,]    1    4    7
      ## [2,]    2    5    8
      ## [3,]    3    6    9
      

元素的名字names()

列表的元素有名字,向量的元素也可以有名字

scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
##  jimmy nicker  Damon Sophie   tony 
##    100     59     73     95     45
  • scores仍然是數(shù)值型,名字不影響數(shù)據(jù)類型。
#應用!
scores["jimmy"]
## jimmy 
##   100
scores[c("jimmy","nicker")]
##  jimmy nicker 
##    100     59
names(scores)[scores>60]
## [1] "jimmy"  "Damon"  "Sophie"

刪除變量

  1. 刪除某個變量 rm(x)
  2. 刪除多個變量rm(df1,df2)
  3. 刪除環(huán)境中所有變量rm(list = ls()) 最常用
  4. 清空控制臺Ctrl+L
  • tibble::column_to_rownames()可以將第一列變成行名,然后刪除第一列
  • 另:一個有趣但不好理解的事情——數(shù)據(jù)框是一種特殊的列表。
    數(shù)據(jù)框封裝了列(向量),列表封裝什么都可以(個人理解,故此[[]]$取列和取列表元素相同

以上來自生信技能樹課程!給小潔老師比心~文章來源地址http://www.zghlxwxcb.cn/news/detail-838549.html

到了這里,關于學習筆記Day3:數(shù)據(jù)框、矩陣和列表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • python系統(tǒng)學習Day3

    python函數(shù)的參數(shù)共有五種類型 參數(shù)定義的順序必須是:必選參數(shù), 默認參數(shù), 可變參數(shù), 命名參數(shù), 參數(shù) 理解起來有兩種分類方式:普通參照位置的參數(shù)/、 / 參數(shù), 固定個數(shù)的參數(shù) / 可變參數(shù)。 位置參照在前,固定個數(shù)在前。 部分類型可指定默認值

    2024年02月19日
    瀏覽(18)
  • 前端學習——ajax (Day3)

    前端學習——ajax (Day3)

    使用 XMLHttpRequest XMLHttpRequest - 查詢參數(shù) XMLHttpRequest - 數(shù)據(jù)提交 Promise - 三種狀態(tài)

    2024年02月16日
    瀏覽(18)
  • 前端學習——JS進階 (Day3)

    前端學習——JS進階 (Day3)

    面向過程編程 面向對象編程 (oop) 練習 constructor 屬性 對象原型 原型繼承 原型鏈

    2024年02月16日
    瀏覽(18)
  • 【劍指offer】學習計劃day3

    【劍指offer】學習計劃day3

    ? 目錄 一. 前言? 二.替換空格 ? ? ? ? a.題目 ? ? ? ? ?b.題解分析 ? ? ? ? ? c.AC代碼 三. 左旋轉字符串 ?? ? ? ? a.題目 ????????b.題解分析 ????????c.AC代碼? ?本系列是針對Leetcode中劍指offer學習計劃的記錄與思路講解。詳情查看以下鏈接: 劍指offer-學習計劃htt

    2024年02月13日
    瀏覽(24)
  • 【C++】day3學習成果:類

    【C++】day3學習成果:類

    1.自行封裝一個棧的類,包含私有成員屬性:棧的數(shù)組、記錄棧頂?shù)淖兞?成員函數(shù)完成:構造函數(shù)、析構函數(shù)、拷貝構造函數(shù)、入棧、出棧、清空棧、判空、判滿、獲取棧頂元素、求棧的大小 頭文件stack.h: 源文件stack.cpp: 主函數(shù)main.cpp: 運行結果: 2.自行封裝一個循環(huán)順序隊列

    2024年02月09日
    瀏覽(20)
  • 【Node.js學習 day3——http模塊】

    【Node.js學習 day3——http模塊】

    命令行 ctrl + c 停止服務 當服務啟動后,更新代碼必須 重啟服務才能生效 響應內(nèi)容中文亂碼的解決辦法 端口號被占用 關閉當前正在運行監(jiān)聽端口的服務(使用較多) 修改其他端口號 HTTP協(xié)議默認端口是80。HTTP服務開發(fā)常用端口有3000,8080,8090,9000等。 想要獲取請求的數(shù)據(jù),需

    2024年02月02日
    瀏覽(22)
  • 黑馬頭條項目學習--Day3: 自媒體文章發(fā)布

    黑馬頭條項目學習--Day3: 自媒體文章發(fā)布

    自媒體后臺搭建 ①:資料中找到heima-leadnews-wemedia.zip解壓 拷貝到heima-leadnews-service工程下,并指定子模塊 執(zhí)行l(wèi)eadnews-wemedia.sql腳本 添加對應的nacos配置 ②:資料中找到heima-leadnews-wemedia-gateway.zip解壓 拷貝到heima-leadnews-gateway工程下,并指定子模塊 添加對應的nacos配置 圖片上傳的

    2024年02月13日
    瀏覽(74)
  • 深度學習DAY3:神經(jīng)網(wǎng)絡訓練常見算法概述

    這是最常見的神經(jīng)網(wǎng)絡訓練方法之一。它通過計算損失函數(shù)對權重的梯度,并沿著梯度的反方向更新權重,從而逐步減小損失函數(shù)的值。梯度下降有多個變種,包括隨機梯度下降(SGD)和小批量梯度下降。 反向傳播是一種基于鏈式法則的方法,用于計算神經(jīng)網(wǎng)絡中每個神經(jīng)元

    2024年02月07日
    瀏覽(24)
  • Vue學習Day3——生命周期\組件化

    Vue學習Day3——生命周期\組件化

    Vue生命周期:就是一個Vue實例從 創(chuàng)建 到 銷毀 的整個過程。 生命周期四個階段:① 創(chuàng)建 ② 掛載 ③ 更新 ④ 銷毀 1.創(chuàng)建階段:創(chuàng)建響應式數(shù)據(jù) 2.掛載階段:渲染模板 3.更新階段:修改數(shù)據(jù),更新視圖 4.銷毀階段:銷毀Vue實例 Vue生命周期過程中,會 自動運行一些函數(shù) ,被稱

    2024年02月15日
    瀏覽(28)
  • 【javaweb】學習日記Day3 - Ajax 前后端分離開發(fā) 入門

    【javaweb】學習日記Day3 - Ajax 前后端分離開發(fā) 入門

    目錄 一、Ajax 1、簡介 2、Axios (沒懂 暫留) (1)請求方式別名 (2)發(fā)送get請求 (3)發(fā)送post請求 (4)案例 二、前端工程化 1、Vue項目-目錄結構 2、Vue項目-啟動 (1)vscode頁面啟動 (2)cmd命令框啟動 3、配置Vue端口號 4、Vue項目開發(fā)流程 三、Vue組件庫 - Element? 1、快速入門

    2024年02月12日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包