美文网首页
R语言矩阵处理技巧【实战】

R语言矩阵处理技巧【实战】

作者: YERA | 来源:发表于2021-05-03 00:22 被阅读0次
pexels-alex-kozlov-7557420.jpg

    矩阵是R语言中比较重要的数据类型,熟练地处理矩阵是数据分析实战中必不可少的过程。这篇文章整理了一些我在做项目过程中遇到的R语言矩阵处理技巧,希望能够帮到大家。

1. 对矩阵的每一行或列循环,但是又不想改变提取的每一行或列的矩阵类型【drop=F】
A <- matrix(1:4,nrow = 2)
A
     [,1] [,2]
[1,]    1    3
[2,]    2    4
C = A[,1]
C
[1] 1 2
B = A[,1,drop=F]
B
     [,1]
[1,]    1
[2,]    2

    主要就是在矩阵的索引时,在参数列表里加入drop=F,即可按照矩阵的方式索引出相应元素。

2. 对矩阵或数据框指定几行或列求和,而不采用自编函数【Reduce】
A <- data.frame(permutations(3)) 
A
  X1 X2 X3
1  1  2  3
2  2  1  3
3  2  3  1
4  1  3  2
5  3  1  2
6  3  2  1
Reduce("+",A[,1:2])
[1] 3 3 5 4 4 5
Reduce("+",A[,1:3],accumulate = T)
[[1]]
[1] 1 2 2 1 3 3
[[2]]
[1] 3 3 5 4 4 5
[[3]]
[1] 6 6 6 6 6 6

    其中permuations函数是1到指定输入参数所有的组合,比如3就有6种排列组合,另外实现指定行求和的函数是Reduce,记住”R“要大写!他可以指定列求和,同时还可以对指定的列累计求和,并以列表的方式输出每次的结果。在编写Mann-Whitney统计量原理的时候经常涉及到。

3.行数不一致的多个数据集按列合并【cbind.fill函数】
cbind.fill <- function(...){
  nm <- list(...) 
  nm <- lapply(nm, as.matrix)
  n <- max(sapply(nm, nrow)) 
  do.call(cbind, lapply(nm, function (x) 
    rbind(x,matrix(,n-nrow(x), ncol(x))))) 
}

    我利用了自编函数,创建了一个类似于rbind.fill的函数,这个rbind.fill函数是plyr包里面针对不同长度的行合并,具体可以看知乎博主西游东行对rbind.fill的介绍,下面是链接:

R-rbind.fill|列数不一致的多个数据集“智能”合并,Get! - 知乎 (zhihu.com)

    让我们一起试试看吧!

> A <- data.frame(permutations(2))
> A
  X1 X2
1  1  2
2  2  1
> B <- data.frame(permutations(3))
> B
  X1 X2 X3
1  1  2  3
2  2  1  3
3  2  3  1
4  1  3  2
5  3  1  2
6  3  2  1
> C <- cbind.fill(A,B)
> C
     X1 X2 X1 X2 X3
[1,]  1  2  1  2  3
[2,]  2  1  2  1  3
[3,] NA NA  2  3  1
[4,] NA NA  1  3  2
[5,] NA NA  3  1  2
[6,] NA NA  3  2  1

    突然灵光乍现!!我们可以将待合并的数据集做转置,再利用现成的rbind.fill函数进行合并,这样行数不一致问题就转化为了列数不一致问题,最后再转置回来!!!

相关文章

  • R语言矩阵处理技巧【实战】

        矩阵是R语言中比较重要的数据类型,熟练地处理矩阵是数据分析实战中必不可少的过程。这篇文章整理了一些我在做项...

  • R语言矩阵小技巧

    也可能不是小技巧,是因为对R语言底层的运算逻辑不熟悉导致的。最近做的课题数据分析频繁需要矩阵扩充,就是有一个小矩阵...

  • 复盘总结(三)

    GTEX表达矩阵预处理 R语言学习:1.append添加新的列。2.R语言处理大规模数据速度不算快,通过安装其他包...

  • 一周复盘汇总

    本周收获 课题思路设计并修正 论文返修完成 生信清洗数据处理批次效应 生信R语言处理列表-数据框-矩阵 ...

  • R语言 矩阵

    矩阵是其中元素以二维矩形布局布置的R对象。 它们包含相同原子类型的元素。 虽然我们可以创建一个只包含字符或只包含逻...

  • 备战美赛

    如果仍然选择大数据处理这块,那么对于R语言的运用必须得较为精通,学习资料有两大块:R语言实战,R数据可视化手册,T...

  • 加权基因共表达网络分析(WGCNA)实例

    获取表达数据矩阵 这里运行R语言包GDCRNATools的帮助文档中的例子获得胆管癌的rna表达矩阵 使用R语言包...

  • 「r<-workshop」第二期:程序控制与数据操作流

    推荐图书 《R for Data Science》 《R 语言编程指南》 《R 实战》 其他推荐见:https:/...

  • R语言杂谈(六)---处理矩阵及因子

    ma <- matrix(c(1:4, 6, 9:15), nrow = 3) ###建立矩阵 ma # 给他一个...

  • R语言矩阵操作

    1.1 矩阵的生成 生成一个4行4列的矩阵,这里用1~16数字。 1 5 9 13 2 6 ...

网友评论

      本文标题:R语言矩阵处理技巧【实战】

      本文链接:https://www.haomeiwen.com/subject/wuqxdltx.html