博客 / 詳情

返回

R中的矩陣、數據框和列表(D3,簡要記錄)

數據框

  • 矩陣和數據框的異同

    1. 矩陣:只允許1種數據類型。
    2. 數據框:每列允許1種數據類型。

初始化數據框

  1. 代碼初始化

    df1 = data.frame(
        col1 = c(...), 
        col2 = paste("...", ...), 
        col3 = rep(...),
        stringsAsFactors = F   # 字符向量默認自動轉為因子,賦值為F以禁用該行為
    )
  2. 已有數據轉換:as.data.frame(...)
  3. 文件讀取、R語言內置數據...

數據框查詢和修改

  1. 維度信息:dimnrowncol
  2. 行列名:rownamescolnames

    • 修改:

      1. rownames(...) = 賦值一個向量以更改全部
      2. rownames(...)[...]取子集以更改部分。
  3. 取子集:

    • 注意

      • 取子集輸入的向量順序與子集對應,可能發生行/列顛倒。
      • 若使用邏輯向量取子集,邏輯向量可能發生循環補齊
      • 取子集時,若使用類似df1[c(...)]只輸入一個維度時,則是按列取子集,同df1[, c(...)]
      • 使用[]索引(取子集)時,將返回一個數據框,若使用df1$...df1[[...]]則將返回向量(僅能取列或單個元素)。
    • 按列名:df1$scoredf1[, c('gene', 'change')]

      • 可被向量賦值修改。
    • 按座標:df1[2,2]df1[c(1, 3), 1:2]

      • 可被向量賦值修改。
    • 按邏輯值:df$gene[df$score > 0]
  4. 添加行/列:

    1. 取不存在的子集賦值。df1$new_col = c(...)
    2. list對象rbind;與向量對象cbind
  5. 刪除:

    1. 取子集後,原地賦值。
    2. 取列子集,對列子集賦NULL
  6. 連接數據框:merge(...)

矩陣

初始化矩陣

  1. 代碼初始化

    # byrow使matrix按行填充數據
    matrix(1:9, nrow = 3, byrow = T, dimnames = list(rownames, colnames)
  2. 已有數據轉換

    cbind(c(...), c(...)) # 列堆疊
    rbind(c(...), c(...)) # 行堆疊
    dim(old_vector) = c(nrow, ncol) # 修改向量dim

矩陣查詢和修改

  1. 維度信息、行列名、取子集、添加/刪除均相似。
  2. 但需要注意:

    1. 取子集時,若使用類似df1[c(...)]只輸入一個維度時,矩陣將被扁平化(bycol),返回向量。
  3. 矩陣轉置:t(...)
  4. 修改維度:dim(...) = c(...)

列表

初始化列表

  1. 代碼初始化

    list('a' = ..., 'b' = ...) # 初始化有標籤的列表
    list(..., ...) # 初始化無標籤的列表(數字索引)

列表查詢和修改

  1. 取子集:

    • 注意:

      • 使用[]進行索引將返回一個子列表,若想返回內容,需使用[[...]]/list1$...
      • 修改時,僅可更改列表中元素內容,而不能更改其標籤。通過訪問內容並賦值來進行修改。
    • 按標籤:list1$...list1[c(...)]
    • 按數字/邏輯下標:list1[-2]list1[c(T, F, ...)]
  2. 添加元素:對未使用的標籤/數字索引進行賦值。
  3. 刪除元素:list1$... = NULLlist1[[...]] = NULL
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.