R中的矩阵、数据框和列表(D3,简要记录)

数据框

  • 矩阵和数据框的异同
    1. 矩阵:只允许1种数据类型。
    2. 数据框:每列允许1种数据类型。

初始化数据框

  1. 代码初始化
   df1 = data.frame(
       col1 = c(...), 
       col2 = paste("...", ...), 
       col3 = rep(...),
       stringsAsFactors = F   # 字符向量默认自动转为因子,赋值为F以禁用该行为
   )
  1. 已有数据转换:as.data.frame(...)
  2. 文件读取、R语言内置数据…

数据框查询和修改

  1. 维度信息:dimnrowncol
  2. 行列名:rownamescolnames
    • 修改:
      1. rownames(...) = 赋值一个向量以更改全部
      2. rownames(...)[...]取子集以更改部分。
  3. 取子集:
    • 注意
      • 取子集输入的向量顺序与子集对应,可能发生行/列颠倒。
      • 若使用逻辑向量取子集,逻辑向量可能发生循环补齐
      • 取子集时,若使用类似df1[c(...)]只输入一个维度时,则是按列取子集,同df1[, c(...)]
      • 使用[]索引(取子集)时,将返回一个数据框,若使用df1$...df1[[...]]则将返回向量(仅能取列或单个元素)。
    1. 按列名:df1$scoredf1[, c('gene', 'change')]
      • 可被向量赋值修改。
    2. 按坐标:df1[2,2]df1[c(1, 3), 1:2]
      • 可被向量赋值修改。
    3. 按逻辑值: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)
  1. 已有数据转换
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$...
      • 修改时,仅可更改列表中元素内容,而不能更改其标签。通过访问内容并赋值来进行修改。
    1. 按标签:list1$...list1[c(...)]
    2. 按数字/逻辑下标:list1[-2]list1[c(T, F, ...)]
  2. 添加元素:对未使用的标签/数字索引进行赋值。
  3. 删除元素:list1$... = NULLlist1[[...]] = NULL
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值