美文网首页
76.关于向量取子集

76.关于向量取子集

作者: 心惊梦醒 | 来源:发表于2021-10-25 22:24 被阅读0次

【上一篇:75.关于原子向量类型的强制转换和向量元素的命名】
【下一篇:77.关于列表-Recursive vectors】

四种取子集的方式

    对向量取子集有四种方式:1)索引方式;2)逻辑值方式;3)名字方式;4)中括号留空。
    索引方式:指定一个仅包含正值、负值或0的numeric vectors,值代表元素索引。可以全是正值,也可以全是负值,也可以是0,但正值和负值不能混合使用。全是正值表示从向量中提取对应索引处的元素,全是负值表示从向量中剔除对应索引处的元素,0则返回空值。对全是正值的情况,值可以重复,返回的结果中元素也会重复。向量是矢量的,也就是有方向的,要跟集合区分开。

> x <- c("one", "two", "three", "four", "five")
# 全正值
> x[c(3, 2, 5)]
[1] "three" "two"   "five" 
# 重复正值
> x[c(1, 1, 5, 5, 5, 2)]
[1] "one"  "one"  "five" "five" "five" "two" 
# 全负值
> x[c(-1, -3, -5)]
[1] "two"  "four"

    逻辑值方式:一个长度等于输入向量的逻辑向量,返回对应位置处为TRUE的元素。

> x <- c(10, 3, NA, 5, 8, 1, NA)
> x[!is.na(x)]
[1] 10  3  5  8  1

    名字方式:对命名向量(named vectors),可以通过其名字取子集。

> x <- c(abc = 1, def = 2, xyz = 5)
> x[c("xyz", "def")]
xyz def 
  5   2 

    中括号留空方式:x[]返回向量本身。这种方式对向量没有用处,但在data frame和tibble中,可以通过留空保留所有的行或列。例如:

mtcars[,c("mpg")]:提取mpg列,行数保持不变
mtcars[mtcars$mpg>18,]:提取mpg>18的行,列不变
中括号中,逗号前后分别表示数据框的两个维度:行和列,留空表示不对哪个维度进行操作

取子集函数

    上文提到的取子集方法实际上使用了函数:"[",这是针对向量取子集的一个工具。这个函数还有一个变形:"[["。后者仅仅提取单个元素且总是丢掉名字。例如:

> x <- c(abc = 1, def = 2, xyz = 5)
# 取两个元素,结果带名字
> x[c("abc","def")]
abc def 
  1   2 
# 取一个元素,结果带名字
> x[c("abc")]
abc 
  1 
# 取一个元素,扔掉名字
> x[[c("abc")]]
[1] 1
# 不能对多个元素进行操作
> x[[c("abc","def")]]
Error in x[[c("abc", "def")]] : 
  attempt to select more than one element in vectorIndex

    "["和"[["在向量中的使用频率并不大,但列表中的应用尤其重要。下一篇就是将列表了,敬请关注。

【上一篇:75.关于原子向量类型的强制转换和向量元素的命名】
【下一篇:77.关于列表-Recursive vectors】

相关文章

  • 76.关于向量取子集

    【上一篇:75.关于原子向量类型的强制转换和向量元素的命名】[https://www.jianshu.com/p/...

  • 77.关于列表-Recursive vectors

    【上一篇:76.关于向量取子集】[https://www.jianshu.com/u/7affe5b57ba1]【...

  • 1.向量及向量取子集

    ①基本运算 ②向量生成 ③对单个向量进行操作 ④对两个向量进行操作 ⑤向量取子集 ⑥向量进阶小问题 1.两个不同类...

  • 【R语言】从不同数据结构中取子集(一)

    写在前面在面对众多数据时,如果你想取出感兴趣的部分,通常会面临取子集的问题。下面我将介绍如何从向量中取子集。 有6...

  • 3.矩阵和列表

    ①变换向量在数据库或矩阵中的顺序 将第四列gene向量变成第一列 矩阵创建,查看矩阵行列数,矩阵取子集,矩阵行列置...

  • 小洁详解《R数据科学》--第十五章 向量(下)

    还是先 5.递归向量 创建 可以包含不同类型的对象 列表甚至可以包含其他列表 5.1列表取子集 [] 提取子列表 ...

  • R语言-列表

    生成列表list函数 取一个子集 取子集的子集 转换为列表及解除列表 列表的转换

  • %in%很简单

    本文是对全国巡讲的补充,但也写全了背景知识,可以从头学习。 1.背景知识 上课时讲到【向量取子集】的两种方法: (...

  • 2021-11-07 单细胞Seurat反向取子集

    网上大多数的帖子取子集都是按照cluster或者某个条件取需要的子集,但是,有时候需要取的是除某个条件以外的子集,...

  • 2019-04-25

    向量空间、基、维数、坐标 是的非空子集,若满足1、 ,封闭满足2、就称是的子空间,或向量空间 定义,设是向量空间,...

网友评论

      本文标题:76.关于向量取子集

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