R语言基础系列前情提要:
Vectorized Operations
R中许多操作可以通过向量化变得更加简洁。
例如将两个向量加在一起:
> x <- 1:4
> y <- 6:9
> z <- x + y
> z
[1] 7 9 11 13
相比写循环更加简便:
> x <- 1:4
> y <- 6:9
> w <- numeric(length(x))
> for(i in seq_along(x)) {
+ w[i] <- x[i] + y[i]
+ }
> w
[1] 5 7 9 11
另外还可以有其他运算:
> x <- 1:4
> y <- 6:9
> x - y
[1] -5 -5 -5 -5
> x * y
[1] 6 14 24 36
> x / y
[1] 0.1666667 0.2857143 0.3750000 0.4444444
类似地,对矩阵也可以有相似的操作:
注: x*y
和 x/y
是两个矩阵相应元素之间的乘除, x%*%y
是矩阵乘法的符号。
> x <- matrix(1:4, 2, 2)
> y <- matrix(rep(10, 4), 2, 2)
> x
[,1] [,2]
[1,] 1 3
[2,] 2 4
> y
[,1] [,2]
[1,] 10 10
[2,] 10 10
>
> ## element-wise multiplication
> x * y
[,1] [,2]
[1,] 10 30
[2,] 20 40
>
> ## element-wise division
> x / y
[,1] [,2]
[1,] 0.1 0.3
[2,] 0.2 0.4
>
> ## true matrix multiplication
> x %*% y
[,1] [,2]
[1,] 40 40
[2,] 60 60
参考资料:
https://bookdown.org/rdpeng/rprogdatascience/R Programming for Data Science
《R语言实战》 Robert I. Kabacoff
快快和我一起上车,请关注:生信小白学习记
猜你喜欢
写在后面
为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外120+ PI,1200+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”