首页 文章

从两个向量中删除相同的索引

提问于
浏览
2

我在R中有两个向量,例如

a <- c(2,6,4,9,8)
b <- c(8,9,4,2,1)

向量a和b以我希望保存的方式排序(我将相互绘制它们) . 我想从向量a中删除某些值,并删除b中相同索引处的值 . 例如如果我想从a中删除≥8的值

a <- a[a<8]

...它给出了一个没有这些值的新向量 .

现在有一种简单的方法可以从b中的相同索引中删除值(在此示例中为索引4和5)吗?也许通过使用数据框?

5 回答

  • 2

    如果向量在逻辑上是相同数据的一部分,请使用数据帧 . 这是更好的编程实践 .

    df <- data.frame(a = a, b = b)
    df <- df[df$a < 8, ]
    

    否则,将另一个向量设置为已删除的索引:

    keep <- a < 8
    a <- a[keep]
    b <- b[keep]
    
  • 0

    为什么不:

    d <- data.frame(a=a, b=b)
    d <- d[d$a < 8, ]
    

    甚至:

    d <- subset(d, a < 8)
    
  • 3

    像这样的东西:

    keep <- a < 8
    a <- a[keep]
    b <- b[keep]
    

    你也可以使用:

    keep <- which( a < 8 )
    
  • 0

    首先从b中删除索引然后从a中删除索引

    b <- b[a<8]
    a <- a[a<8]
    

    a <8返回一个向量,该向量定义哪些索引小于8 .

  • 1

    如果这纯粹用于绘图,则可以使用 NA 避免弄乱 b 和x轴 .

    a[a>8]<-NA
    
    plot(b,a) #works for point or line graphs
    

相关问题