1

这似乎是一个非常简单的问题,但我无法弄清楚。

如何从 R 中的列表中选择最多 n 个元素?

> x = 1:3
> x[1:5]
[1]  1  2  3 NA NA

我想要的是x[1:5]return [1] 1 2 3

我尝试的解决方案是

x[!is.na(x[1:3])]

这仍然不起作用,因为

> x[!is.na(x[1:5])]
[1] 1 2 3            # correct
> x[!is.na(x[1:2])]
[1] 1 2 3            # where's that coming from?
4

2 回答 2

1

x[!is.na(x[1:2])]
[1] 1 2 3 # where's that coming from?

那来自回收
is.na(X)返回长度等于其参数的逻辑向量X。因为没有NAs,所以这个向量全是TRUEs。这些值(再次,全部TRUE)被回收到xx括号外侧的,x[ . ])的长度

至于从 x 中进行选择,不要超过 x 的长度,使用headtail@Ananda 在评论中提到的。

x <- 1:6
head(x, 4)
# [1] 1 2 3 4
head(x, 20)
# [1] 1 2 3 4 5 6

tail(x, 4)
# [1] 3 4 5 6
tail(x, 20)
# [1] 1 2 3 4 5 6
于 2013-10-18T05:04:10.567 回答
1

为确保您的索引不会超出向量的末尾,您可以执行以下操作:

x[1:(min(5, length(x)))]
于 2013-10-18T04:43:14.710 回答