我在 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)中删除值?也许通过使用数据框?
Something like this:
keep <- a < 8
a <- a[keep]
b <- b[keep]
You could also use:
keep <- which( a < 8 )
如果向量在逻辑上是相同数据的一部分,请使用数据框。这是更好的编程实践。
df <- data.frame(a = a, b = b)
df <- df[df$a < 8, ]
否则,将另一个向量设置为删除的索引:
keep <- a < 8
a <- a[keep]
b <- b[keep]
Why not:
d <- data.frame(a=a, b=b)
d <- d[d$a < 8, ]
Or even:
d <- subset(d, a < 8)
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.
如果这纯粹是为了绘图,您可以避免b
使用NA
.
a[a>8]<-NA
plot(b,a) #works for point or line graphs