首页 > 解决方案 > 有条件地删除向量元素

问题描述

我有两个向量 a,b,其中 b 可以比 a 长 1 个单位。在这种情况下,我需要删除向量 b 的最后一个元素以使它们相等。我试过以下:

a <- c(1:3)
b <- c(1:4)

b <- ifelse(length(a) != length(b), b[-length(b)], b)
b <- ifelse(length(a) != length(b), b[-NROW(b)], b)

在这两种情况下,我得到

> b
[1] 1

但是当我从 ifelse() 中执行此操作时,我可以得到我所期望的:

c <- c(1:4)
c <- c[-length(c)]

> c
[1] 1 2 3

我知道如何使用“if”来编写它,但我正在寻找更好的选择。

标签: rif-statementconditional-statements

解决方案


我将使用第一个向量的长度作为上限来对向量进行子集化:

a <- c(1:3)
b <- c(1:4)
b[1:length(a)]

[1] 1 2 3

推荐阅读