數據框
-
矩陣和數據框的異同
- 矩陣:只允許1種數據類型。
- 數據框:每列允許1種數據類型。
初始化數據框
-
代碼初始化
df1 = data.frame( col1 = c(...), col2 = paste("...", ...), col3 = rep(...), stringsAsFactors = F # 字符向量默認自動轉為因子,賦值為F以禁用該行為 ) - 已有數據轉換:
as.data.frame(...) - 文件讀取、R語言內置數據...
數據框查詢和修改
- 維度信息:
dim、nrow、ncol -
行列名:
rownames、colnames-
修改:
rownames(...) =賦值一個向量以更改全部rownames(...)[...]取子集以更改部分。
-
-
取子集:
-
注意:
- 取子集輸入的向量順序與子集對應,可能發生行/列顛倒。
- 若使用邏輯向量取子集,邏輯向量可能發生循環補齊。
- 取子集時,若使用類似
df1[c(...)]只輸入一個維度時,則是按列取子集,同df1[, c(...)]。 - 使用
[]索引(取子集)時,將返回一個數據框,若使用df1$...、df1[[...]]則將返回向量(僅能取列或單個元素)。
-
按列名:
df1$score、df1[, c('gene', 'change')]- 可被向量賦值修改。
-
按座標:
df1[2,2]、df1[c(1, 3), 1:2]- 可被向量賦值修改。
- 按邏輯值:
df$gene[df$score > 0]
-
-
添加行/列:
- 取不存在的子集賦值。
df1$new_col = c(...) - 與
list對象rbind;與向量對象cbind
- 取不存在的子集賦值。
-
刪除:
- 取子集後,原地賦值。
- 取列子集,對列子集賦
NULL。
- 連接數據框:
merge(...)
矩陣
初始化矩陣
-
代碼初始化
# byrow使matrix按行填充數據 matrix(1:9, nrow = 3, byrow = T, dimnames = list(rownames, colnames) -
已有數據轉換
cbind(c(...), c(...)) # 列堆疊 rbind(c(...), c(...)) # 行堆疊 dim(old_vector) = c(nrow, ncol) # 修改向量dim
矩陣查詢和修改
- 維度信息、行列名、取子集、添加/刪除均相似。
-
但需要注意:
- 取子集時,若使用類似
df1[c(...)]只輸入一個維度時,矩陣將被扁平化(bycol),返回向量。
- 取子集時,若使用類似
- 矩陣轉置:
t(...) - 修改維度:
dim(...) = c(...)
列表
初始化列表
-
代碼初始化
list('a' = ..., 'b' = ...) # 初始化有標籤的列表 list(..., ...) # 初始化無標籤的列表(數字索引)
列表查詢和修改
-
取子集:
-
注意:
- 使用
[]進行索引將返回一個子列表,若想返回內容,需使用[[...]]/list1$... - 修改時,僅可更改列表中元素內容,而不能更改其標籤。通過訪問內容並賦值來進行修改。
- 使用
- 按標籤:
list1$...、list1[c(...)] - 按數字/邏輯下標:
list1[-2]、list1[c(T, F, ...)]
-
- 添加元素:對未使用的標籤/數字索引進行賦值。
- 刪除元素:
list1$... = NULL、list1[[...]] = NULL