R 向量

R 向量 首页 / R入门教程 / R 向量

      vector 是一种基本的数据结构,在R编程中起着重要的作用。

      在R中,共享相同数据类型的元素序列称为向量。向量支持逻辑,整数,双精度,字符,复数或原始数据类型。向量中包含的元素称为向量的组件。我们可以在 typeof()函数的帮助下检查向量的类型。

R Vector

      长度(length)是向量的重要属性。向量长度基本上是向量中元素的数量,它是通过length()函数来计算的。

      向量分为两部分,即原子向量(Atomic vectors)列表(Lists)。它们具有三个常见属性,即函数类型,函数长度属性函数

R Vector

      原子向量和列表之间只有一个区别。在原子向量中,所有元素都是相同的类型,但是在列表中,元素是不同的数据类型。在本节中,我们将仅讨论原子向量。我们将在下一个主题中简要讨论列表。

创建向量

      在R中,我们使用c()函数创建向量。此函数返回一维数组或简单的向量。 c()函数是结合了其参数的通用函数。所有参数均受通用数据类型(即返回值的类型)的限制。有多种其他方法可以在R中创建向量,如下所示:

1)使用冒号(:)运算符

我们可以在冒号运算符的帮助下创建向量。使用冒号运算符有以下语法:

该运算符创建一个向量,其元素从x到y,并将其分配给z。

示例:

a<-4:-10
a

输出

[1]   4   3   2   1   0   -1   -2   -3   -4   -5   -6   -7   -8   -9   -10

2)使用seq()函数

      在R中,我们可以借助seq()函数创建一个向量。序列函数将元素序列创建为向量。 seq()函数有两种使用方式,即通过使用by参数设置步长或通过" length.out"函数指定向量的长度。

示例:

seq_vec<-seq(1,4,by=0.5)
seq_vec
class(seq_vec)

输出

[1]   1.0   1.5   2.0   2.5   3.0   3.5   4.0

示例:

seq_vec<-seq(1,4,length.out=6)
seq_vec
class(seq_vec)

输出

[1]   1.0   1.6   2.2   2.8   3.4   4.0
[1]   "numeric"

原子向量

      在R中,有四种类型的原子向量。原子载体在数据科学中起着重要作用。原子矢量是通过 c()函数创建的。这些原子向量如下:

R Vector

数值向量(Numeric vector)

      十进制值在R中被称为数字数据类型。如果我们将十进制值分配给任何变量d,则此d变量将成为数字类型。包含数字元素的向量称为数字向量。

示例:

d<-45.5
num_vec<-c(10.1, 10.2, 33.2)
d
num_vec
class(d)
class(num_vec)

输出

[1]   45.5
[1]   10.1   10.2   33.2
[1]   "numeric"
[1]   "numeric"

整数向量(Integer vector)

      非分数数值称为整数数据。该整数数据由" Int"表示。 Int大小为2个字节,long Int大小为4个字节。有两种将整数值分配给变量的方法,即通过使用as.integer()函数并将L附加到该值上。

      包含整数元素的向量称为整数向量。

示例:

d<-as.integer(5)
e<-5L
int_vec<-c(1,2,3,4,5)
int_vec<-as.integer(int_vec)
int_vec1<-c(1L,2L,3L,4L,5L)
class(d)
class(e)
class(int_vec)
class(int_vec1)

输出

[1]   "integer"
[1]   "integer"
[1]   "integer"
[1]   "integer"

字符向量(Character vector)

      字符以一字节整数的形式保存在内存中。在R中,有两种创建字符数据类型值的方法,即使用as.character()函数以及在双引号("")或单引号(")之间键入字符串。包含字符元素的向量称为整数向量。

示例:

d<-'learnfk'
e<-"toolfk"
f<-65
f<-as.character(f)
d
e
f
char_vec<-c(1,2,3,4,5)
char_vec<-as.character(char_vec)
char_vec1<-c("learnfk","toolfk","poemfk","chromefk")
char_vec
class(d)
class(e)
class(f)
class(char_vec)
class(char_vec1)

输出

[1]   "learnfk"
[1]   "toolfk"
[1]   "65"
[1]   "1"   "2"   "3"   "4"   "5"
[1]   "learnfk"   "toolfk"   "poemfk"   "chromefk"
[1]   "character"
[1]   "character"
[1]   "character"
[1]   "character"
[1]   "character"

逻辑向量(Logical vector)

      逻辑数据类型只有两个值,即True或False。这些值基于满足的条件。包含布尔值的向量称为逻辑向量。

示例:

d<-as.integer(5)
e<-as.integer(6)
f<-as.integer(7)
g<-d>e
h<-e<f
g
h
log_vec<-c(d<e, d<f, e<d,e<f,f<d,f<e)
log_vec
class(g)
class(h)
class(log_vec)

输出

[1]   FALSE
[1]   TRUE
[1]   TRUE   TRUE   FALSE   TRUE   FALSE   FALSE
[1]   "logical"
[1]   "logical"
[1]   "logical"

访问向量

      我们可以借助向量索引来访问向量的元素。索引表示向量中存储值的位置。索引将在整数,字符或逻辑的帮助下执行。

R Vector

1)用整数向量索引

      在整数向量上,索引的执行方式与在 C C++Java中应用的方式相同。只有一个区别,即在C,C++和Java中,索引从0开始,但是在R中,索引从1开始。像其他编程语言一样,我们通过在方括号中指定整数值来执行索引。到我们的向量。

示例:

seq_vec<-seq(1,4,length.out=6)
seq_vec
seq_vec[2]

输出

[1] 1.0 1.6 2.2 2.8 3.4 4.0
[1] 1.6

2)用字符向量索引

      在字符向量索引中,我们为向量的每个元素分配一个唯一键。这些键是每个元素的唯一定义,可以很容易地访问。

示例:

char_vec<-c("learnfk"=22,"toolfk"=23,"chromefk"=24)
char_vec
char_vec["learnfk"]

输出

learnfk   toolfk chromefk
   22      23     24
learnfk
      22

3)用逻辑向量建立索引

      在逻辑索引中,它返回其对应位置具有逻辑矢量TRUE的那些位置的值。让我们看一个例子,以了解如何在向量上执行它。

示例:

a<-c(1,2,3,4,5,6)
a[c(TRUE,FALSE,TRUE,TRUE,FALSE,TRUE)]

输出

[1] 1 3 4 6

向量运算

      在R中,对向量执行各种操作。我们可以彼此相加,相减,相乘或相除两个或多个向量。在数据科学中,R扮演着重要角色,并且数据操作需要进行操作。对向量执行以下类型的操作。

R Vector

1)合并向量

      c()函数不仅用于创建向量,而且还用于组合两个向量。通过组合一个或多个向量,它形成一个新向量,其中包含每个向量的所有元素。让我们看一个例子,看看c()函数如何组合向量。

示例:

p<-c(1,2,4,5,7,8)
q<-c("learnfk","toolfk","poemfk","chromefk","nesfk","hello")
r<-c(p,q)

输出

[1] "1"        "2"        "4"        "5"        "7"        "8"
[7] "learnfk"  "toolfk"   "poemfk"   "chromefk"   "nesfk" "hello"

2)算术运算

      我们可以对向量执行所有算术运算。算术运算是对向量逐个成员执行的。我们可以加,减,乘或除两个向量。让我们看一个例子,以了解如何对向量执行算术运算。

示例:

a<-c(1,3,5,7)
b<-c(2,4,6,8)
a+b
a-b
a/b
a%%b

输出

[1]  3  7 11 15 
[1] -1 -1 -1 -1
[1]  2 12 30 56
[1] 0.5000000 0.7500000 0.8333333 0.8750000
[1] 1 3 5 7

3)逻辑索引向量

      借助R中的逻辑索引向量,我们可以从给定向量形成一个新向量。该向量的长度与原始向量的长度相同。仅当切片中包含原始向量的相应成员时,向量成员才为TRUE;否则,向量成员为TRUE。否则,它将是错误的。让我们看一个例子,以了解如何在逻辑索引向量的帮助下形成一个新向量。

示例:

a<-c("learnfk","toolfk","poemfk","nesfk","chromefk","xiuxiandou")
b<-c(TRUE,FALSE,TRUE,TRUE,FALSE,FALSE)
a[b]

输出

[1] "learnfk"  "poemfk"   "nesfk"

4)数值索引

      在R中,我们指定方括号[]之间的索引以索引数值。如果我们的索引为负,它将返回除我们指定的索引以外的所有值。例如,指定[-3]将提示R将-3转换为其绝对值,然后搜索占用该索引的值。

示例:

q<-c("learnfk","toolfk","chromefk","baidu","nesfk","poemfk")
q[2]
q[-4]
q[15]

输出

[1] "chromefk"
[1] "learnfk"  "toolfk"   "chromefk"   "nesfk" "poemfk"
[1] NA

5)重复索引

      索引向量允许重复值,这意味着我们可以在一个操作中访问一个元素两次。让我们看一个例子来了解重复索引是如何工作的。

示例:

q<-c("learnfk","poemfk","chromefk","nesfk","toolfk","xiuxiandou")
q[c(2,4,4,3)]  

输出

[1] "poemfk"   "nesfk"    "nesfk"    "chromefk"

6)参数指标

      参数索引用于对向量进行切片以形成新向量。对于切片,我们使用了冒号(:)运算符。参数索引对于涉及大量操作员的情况非常有用。让我们看一个示例,以了解如何在冒号运算符的帮助下完成切片以形成新矢量。

示例:

q<-c("learnfk","poemfk","chromefk","nesfk","toolfk","xiuxiandou")
b<-q[2:5]
b

输出

[1] "poemfk"   "chromefk" "nesfk"    "toolfk"  

7)乱序索引

      在R中,索引向量可能是乱序的。下面是一个示例,其中矢量切片的第一和第二值的顺序颠倒了。

示例:

q<-c("learnfk","toolfk","poemfk","nesfk","xiuxiandou","chromefk")
q[c(2,1,3,4,5,6)]

输出

[1] "toolfk"     "learnfk"    "poemfk"     "nesfk"      "xiuxiandou"
[6] "chromefk"  

8)命名向量成员

      我们首先将字符向量创建为:

z=c("LEARNFK","TOOLFK")
z

输出

[1] "LEARNFK" "TOOLFK"

创建字符矢量后,我们将第一个矢量成员命名为"Start",将第二个成员命名为"End",分别为:

names(z)=c("Start","End")
z

输出

Start              End
"LEARNFK"    "TOOLFK"

我们按名称检索第一个成员,如下所示:

z["Start"]

输出

Start
"LEARNFK"

我们可以借助字符串索引向量反转顺序。

z[c("Second","First")]

输出

     Second        First
"TOOLFK"    "LEARNFK"

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

玩转Git三剑客 -〔苏玲〕

Flutter核心技术与实战 -〔陈航〕

DevOps实战笔记 -〔石雪峰〕

To B市场品牌实战课 -〔曹林〕

动态规划面试宝典 -〔卢誉声〕

Go 并发编程实战课 -〔晁岳攀(鸟窝)〕

手把手带你搭建秒杀系统 -〔佘志东〕

JavaScript进阶实战课 -〔石川〕

好记忆不如烂笔头。留下您的足迹吧 :)