如何修剪 R 向量?

2024-06-08

我有以下排序向量:

> v
 [1] -1  0  1  2  4  5  2  3  4  5  7  8  5  6  7  8 10 11

如何删除 -1、0 和 11 条目无需循环整个向量,使用用户循环还是隐式使用语言关键字?也就是说,我想修剪每个向量edge并且仅在每个边缘处,以便排序序列在我的最小、最大参数 1 和 10 内。该解决方案应假设向量已排序以避免检查每个元素。

当我们想要将向量中的项用作另一个对象中的索引时,这种解决方案可以在非常大的向量的向量化操作中派上用场。对于一个应用程序,请参阅这个线程 https://stackoverflow.com/questions/16200667/how-can-i-vectorize-access-to-neighbour-vector-elements-in-r.


要按索引将元素包含在向量中:

v [2:10]

排除某些元素

v [-c (1, 11) ]

仅包含特定范围:

v <- v [v>=1 & v <=10]

如果允许我假设,就像在您的示例中一样,要修剪的元素数量

> n<-1e8
> v<--3:(n+3)
> 
> min <- 1
> max <- length(v)
> 
> calcMin <- function(v, minVal){
+   while(v[min] < minVal){
+       min <- min + 1
+   }
+   min
+ }
> 
> calcMax <- function(v, maxVal){
+   while(v[max] > maxVal){
+       max <- max - 1
+   }
+   max
+ }
> 
> #Compute the min and max indices and create a sequence
> system.time(a <- v[calcMin(v, 1):calcMax(v,n)])
   user  system elapsed 
  1.030   0.269   1.298 
> 
> #do a binary search to find the elements (as suggested by @nograpes)
> system.time(b <- v[do.call(seq,as.list(findInterval(c(1,n),v)))])
   user  system elapsed 
  2.208   0.631   2.842 
> 
> #use negative indexing to remove elements
> system.time(c <- v[-c(1:(calcMin(v, 1)-1), (calcMax(v,n)+1):length(v))])
   user  system elapsed 
  1.449   0.256   1.704 
> 
> #use head and tail to trim the vector
> system.time(d <- tail(head(v, n=(calcMax(v,n)-length(v))), n=-calcMin(v, 1)+1))
   user  system elapsed 
  2.994   0.877   3.871 
> 
> identical(a, b)
[1] TRUE
> identical(a, c)
[1] TRUE
> identical(a, d)
[1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修剪 R 向量? 的相关文章

  • 使用 cmd 和 R 配置 databricks

    我正在尝试使用 databricks cli 并调用 databricks 配置 这就是我从 cmd 执行此操作的方法 somepath gt databricks configure token Databricks Host shoul
  • knitr pandoc:“无法使用 pdf writer 生成 pdf 输出”

    Up front using pandoc 在knitr中 当尝试将 md或 Rmd编译为PDF时 它会抱怨 我正在简化流程可重复的研究 正如许多地方所记录的那样 我在用着pandoc and knitr并制作出色的文档 我还试图为一些不太
  • igraph - 将文本添加到社区图

    使用下面的代码 我可以在 igraph 提供的 空手道俱乐部 示例中生成社区图 请参见第一张图片 library igraph karate lt make graph Zachary wc lt cluster walktrap kara
  • 计算图像 (M, N) 和模板 (3, 3) 之间的平方差和以进行模板匹配的更快方法?

    我正在实现一种纹理合成算法 如下所示here http graphics cs cmu edu people efros research NPS alg html 为此 我需要计算平方差之和 这是一个估计之间误差的指标template以及
  • 如何使用 ggplot2 在轴标签中使用上标

    如何在x轴上打印埃平方 我尝试如下 labs x x axis 2 y y axis 我们可以用bquote library ggplot2 ggplot mtcars aes hp mpg geom point labs x bquote
  • 从谷歌街道地址中提取城市和州信息

    我有一个数据集 其中包含不同点位置的纬度 经度信息 我想知道与每个点关联的城市和州 按照此example https stackoverflow com questions 22911642 applying revgeocode to a
  • 按组渐进串联列[重复]

    这个问题在这里已经有答案了 假设我有这个输入 ID date 1 date 2 str 1 1 2010 07 04 2008 01 20 A 2 2 2015 07 01 2011 08 31 C 3 3 2015 03 06 2013
  • 如何在R中绘制堆积柱形图?

    有谁知道如何使用 R 绘制由超过 1 个变量堆叠的列的直方图 就像excel中的 堆积柱形图 一样 谢谢你 我假设您确实想要一个条形图而不是直方图 在这种情况下 barplot从标准图形或barchart格子包中的两者都可以做到 或者使用
  • 使用同一变量的多个子集创建新数据框

    我想创建一个新的数据框 其中的列是由不同变量分割的同一变量的子集 例如 我想创建一个新的变量子集 b 其中列由不同变量 year 的子集分割 set seed 88 df lt data frame year rep 1996 1998 3
  • 为什么 NaN^0 == 1

    受到早期高尔夫代码的提示 为什么会 gt NaN 0 1 1 这非常有道理NA 0为 1 因为NA缺少数据 并且any数字提高到 0 将得到 1 包括 Inf and Inf 然而NaN应该代表非数字 那么为什么会这样呢 当帮助页面出现时
  • 在 data.table 1.9.4 或更早版本上,按字符串键 `order(-x,v)` 对 data.table 中的行进行降序排序会出现错误

    假设我有以下内容data table in R library data table DT data table x rep c b a c each 3 y c 1 3 6 v 1 9 我想按两列排序 例如列x and v 我用过这个 D
  • 在数据框中使用 Ifelse

    我正在使用的数据框是 gt df lt data frame Name c Joy Jane Jack Jad M1 c 10 40 55 90 gt df Name M1 1 Joy 10 2 Jane 40 3 Jack 55 4 Ja
  • 照片与 r 中的图形对齐

    首先我想我需要在powerpoint中手动完成它 然后我想如果有解决方案的话可以尝试使用R 这是我的示例数据 set seed 123 myd lt expand grid cat LETTERS 1 5 cond c F T phase
  • 使用清单修改 Latex 文档中 R 代码的字体颜色

    我试图在 Latex 文档中突出显示 R 代码 但我似乎无法更改代码框中的字体颜色 举个例子 我认为commentstyle color red 应该给我红色字体的评论 但评论显示为蓝色或黑色 不太清楚 另外 我认为backgroundco
  • 从数据框中提取具有最高值和最低值的行

    我对 R 还很陌生 我主要用它来可视化统计数据ggplot2图书馆 现在我遇到了数据准备的问题 我需要编写一个函数 该函数将从数据框中删除指定列中具有最高和最低值的一些数字 2 5 或 10 行 并将它们放入另一个数据框中 并对两个因素的每
  • Stata的xtnbreg有R函数吗?

    一直在使用 Stata 在复制中运行负二项式回归 不确定 Stata 是如何做到这一点的 但想知道是否有 R 函数 包可以做同样的事情 R 会让我更好地了解它是如何工作的 因为我可以看到代码 看看glm nb函数在MASS包裹 如果您对 幕
  • 升级到 Mac OSX 10.10 后,从 R 控制台运行系统命令无法找到已安装的程序

    我一直有一些奇怪的问题 https stackoverflow com questions 26477679 texi2dvi error when compiling tex files using rstudio and knitr s
  • 在 R 中将数组转换为矩阵

    我有一个数组 其中包括名为 comp 的项目 是 否 的两个熟练度变量 theta0 theta1 这需要转换为一个矩阵 有什么方法可以转换像底部那样的矩阵吗 我的数组如下所示 gt priCPT i6 comp Yes theta1 th
  • Numpy 相当于 if/else 不带循环

    有没有任何Pythonic方法可以删除下面代码中的for循环和if else 此代码迭代 NumPy 数组并检查条件并根据条件更改值 gt gt gt import numpy as np gt gt gt x np random rand
  • GGplot为点添加数据标签

    如何使用 ggplot 将数据标签添加到点 我有一个名为 stacked 的堆叠数据框 gt head stacked time value variable 1 100 152 2211 gg 2 110 146 3304 gg 3 11

随机推荐