前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >向量取子集和元素的修改方法

向量取子集和元素的修改方法

原创
作者头像
小叮当aka
发布2023-03-18 14:07:37
6190
发布2023-03-18 14:07:37
举报

title: "向量取子集和元素的修改方法"

output: html_document

date: "2023-03-09"


1.向量取子集的方法——用"[]"中括号取子集

(1)按照逻辑值取子集:中括号里是与x等长且一一对应的逻辑值向量

将TRUE对应的值挑选出来,FALSE对应的值丢弃

代码语言:text
复制
x <- 8:12
x[x==10]
代码语言:txt
复制
## [1] 10
代码语言:text
复制
x[x<12]
代码语言:txt
复制
## [1]  8  9 10 11
代码语言:text
复制
x[x %in% c(9,13)]
代码语言:txt
复制
## [1] 9

(2)按照位置取子集:中括号里是单独的下标或由下标组成的向量

代码语言:text
复制
x <- 8:12
x[4]         #取第4个元素
代码语言:txt
复制
## [1] 11
代码语言:text
复制
x[2:4]       #取第2-4个元素
代码语言:txt
复制
## [1]  9 10 11
代码语言:text
复制
x[c(1,5)]    #取第1和第5个元素,不能写成x[1,5]
代码语言:txt
复制
## [1]  8 12
代码语言:text
复制
x[-4]        #反选,去掉第4个元素,其他全保留
代码语言:txt
复制
## [1]  8  9 10 12
代码语言:text
复制
x[-(2:4)]    #反选,去掉第2-4个元素,其他保留
代码语言:txt
复制
## [1]  8 12

2.修改向量中的某个/某些元素:取子集+赋值

(1)改一个元素

代码语言:text
复制
x <- 8:12
x[4] <- 40                #将第4个元素改为40
x
代码语言:txt
复制
## [1]  8  9 10 40 12

(2)改多个元素

代码语言:text
复制
x <- 8:12
x[c(1,5)] <- c(80,20)     #将第1个和第5个元素分别改为80和20
x
代码语言:txt
复制
## [1] 80  9 10 11 20

Attention:R语言里的修改,都要赋值,没有赋值就没有发生过!

3.取子集与赋值出现歧义的解决方法

生成10个随机数,用向量取子集的方法,取出其中小于-2的值

代码语言:text
复制
z = rnorm(n=10,mean=0,sd=18)
z
代码语言:txt
复制
##  [1]  15.080018  37.348448  -2.262640  23.519212   1.758657
##  [6]  -8.655105  21.539157 -10.966188   4.178155   5.302523
代码语言:text
复制
z[z<-2] 
代码语言:txt
复制
## [1] 37.34845
代码语言:text
复制
z
代码语言:txt
复制
## [1] 2

输出结果为2,显然不是我们想要的结果。这是因为"-2"与前面的"<"紧贴一起,与R语言赋值符号产生歧义,赋值的优先级高于小于-2,因此z输出为2.

解决方法:在负数与"<"之间加空格,或者将负数用括号括起来

代码语言:text
复制
z = rnorm(n=10,mean=0,sd=18)
z
代码语言:txt
复制
##  [1]  -6.871995  -9.571287 -16.963835   3.243446  34.555115
##  [6]   2.325657 -10.771052  11.820617  10.357968  -7.175953
代码语言:text
复制
z[z < -2]    #方法1
代码语言:txt
复制
## [1]  -6.871995  -9.571287 -16.963835 -10.771052  -7.175953
代码语言:text
复制
z[z<(-2)]    #方法2
代码语言:txt
复制
## [1]  -6.871995  -9.571287 -16.963835 -10.771052  -7.175953

引用自生信技能树

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.向量取子集的方法——用"[]"中括号取子集
    • (1)按照逻辑值取子集:中括号里是与x等长且一一对应的逻辑值向量
      • 将TRUE对应的值挑选出来,FALSE对应的值丢弃
        • (2)按照位置取子集:中括号里是单独的下标或由下标组成的向量
        • 2.修改向量中的某个/某些元素:取子集+赋值
          • (1)改一个元素
            • (2)改多个元素
              • Attention:R语言里的修改,都要赋值,没有赋值就没有发生过!
              • 3.取子集与赋值出现歧义的解决方法
                • 生成10个随机数,用向量取子集的方法,取出其中小于-2的值
                  • 输出结果为2,显然不是我们想要的结果。这是因为"-2"与前面的"<"紧贴一起,与R语言赋值符号产生歧义,赋值的优先级高于小于-2,因此z输出为2.
                • 解决方法:在负数与"<"之间加空格,或者将负数用括号括起来
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档