2

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

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

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

a <- a[a<8]

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

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

4

5 回答 5

3

Something like this:

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

You could also use:

keep <- which( a < 8 )
于 2013-11-14T14:44:02.767 回答
2

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

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

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

keep <- a < 8
a <- a[keep]
b <- b[keep]
于 2013-11-14T14:45:56.527 回答
1

Why not:

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

Or even:

d <- subset(d, a < 8)
于 2013-11-14T14:45:01.400 回答
0

First remove the indices from b then from a

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

a<8 returns a vector which defines which indices are smaller than 8.

于 2013-11-14T14:44:39.447 回答
0

如果这纯粹是为了绘图,您可以避免b使用NA.

a[a>8]<-NA

plot(b,a) #works for point or line graphs
于 2013-11-14T16:36:29.457 回答