学习R记录 <- 基础3

作者 : 开心源码 本文共2145个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共194人阅读

向量、矩阵、数组

向量、矩阵、数组,都是在使用R中常用到的

1.1向量

使用c函数可以拼接数值和向量

c(1, 1:3, c(5, 8), 13)#不同值被拼接成单一向量[1] 1 1 2 3  5  8 13

除此之外用vector函数可以创立一个指定类型和长度的矢量。这个矢量的值可以是0,FALSE,空的字符串,等等。

> vector('numeric', 5)[1] 0 0 0 0 0> vector('complex', 5)[1] 0+0i 0+0i 0+0i 0+0i 0+0i> vector('logical', 5)[1] FALSE FALSE FALSE FALSE FALSE> vector('character', 5)[1] "" "" "" "" ""

需要注意的是“空值”并不是NA值,空值表示为NULL。
同样使用下面的命令与上面命令等价:

> numeric(5)[1] 0 0 0 0 0> complex(5)[1] 0+0i 0+0i 0+0i 0+0i 0+0i> logical(5)[1] FALSE FALSE FALSE FALSE FALSE> character(5)[1] "" "" "" "" ""

1.2序列

除了冒号来创立序列之外,还有几个更加简单快速的函数来创立序列。

1.2.1

seq.int函数可以创立一个序列。序列的范围有两个数指定,原理与冒号相同。

> seq.int(3,12) [1]  3  4  5  6  7  8  9 10 11 12

而seq.int函数比冒号方便的地方在于,它可以指定步长,

> seq.int(3,12, 2)[1]  3  5  7  9 11

1.2.2

seq_len函数
这个函数会创立一个从1开始到指定输入值的序列,尽管有时候不如直接用冒号方便但是当输入值为0时:

> 1:0[1] 1 0> seq_len(0)integer(0)

1.2.3

seq_along函数
此函数会创立一个从1开始,长度为输入值的序列

> pp <- c('peter', 'piper', 'picked', 'a', 'peck', 'of', 'pickled', 'peppers')> for (i in seq_along(pp)) {+ print(pp[i])}[1] "peter"[1] "piper"[1] "picked"[1] "a"[1] "peck"[1] "of"[1] "pickled"[1] "peppers"

1.2.4 长度

每一个向量都有长度,是一个非负整数(可以为零),可以通过length函数查询,NA也会被计入长度。
值得一提的是字符串长度,函数length得到的是字符串的数目,而每个字符串中字符的长度用函数nchar可以得到。

> sn <- c('a', 'dsad', 'dsajdsadsadas', 'fgigdfsa')> length(sn)[1] 4> nchar(sn)[1]  1  4 13  8

1.2.5 命名

R中的命名有点像python中的字典,即name=value来表示

> x <- c(apple = 1, banbana = 2, "kiwi fruit" = 3, 4)> x     apple    banbana kiwi fruit                     1          2          3          4 

当然也可以在创立向量之后对其赋值。

> x <- 1:4> names(x) <- c('apple', 'banana', "kiwi fruit")> x     apple     banana kiwi fruit       <NA>          1          2          3          4 

name函数可以用来取的向量的名称。

1.3矩阵与数组

1.3.1 创立矩阵和数组

使用array函数可以创立数组,它需要传入两个向量(维度和值)来作为参数。另外,可以为每个维度命名。

test <- array(  1:24,  dim = c(4, 3, 2),  dimnames = list(    c('one', 'two', 'three', 'four'),    c('ein', 'zwei', 'drei'),    c('un', 'deux')  ))> test, , un      ein zwei dreione     1    5    9two     2    6   10three   3    7   11four    4    8   12, , deux      ein zwei dreione    13   17   21two    14   18   22three  15   19   23four   16   20   24

创立矩阵相似于创立数组,其实矩阵就是一维的数组。

> test<- matrix(+   1:24,+   nrow = 4, ncol = 3,  +   dimnames = list(+     c('one', 'two', 'three', 'four'), +     c('ein', 'zwei', 'drei') +  )+ )> test      ein zwei dreione     1    5    9two     2    6   10three   3    7   11four    4    8   12

1.3.2行、列、维度

对于矩阵和数组,dim函数会返回其维度的整数值向量。

> dim(test)[1] 4 3 2> dim(test)[1] 4 3

1.3.3合并矩阵

使用cbindrbind两个函数可以按或者者按来合并矩阵。

> test1 <- matrix(seq.int(2, 24, 2), nrow = 4)> test2 <- test> cbind(test1, test2)              ein zwei dreione   2 10 18   1    5    9two   4 12 20   2    6   10three 6 14 22   3    7   11four  8 16 24   4    8   12> rbind(test1, test2)      ein zwei drei        2   10   18        4   12   20        6   14   22        8   16   24one     1    5    9two     2    6   10three   3    7   11four    4    8   12

代码皆来自或者参考《学习R》

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 学习R记录 <- 基础3

发表回复