这似乎是一个非常简单的问题,但我无法弄明白。
如何从R?列表中选择最多n个元素?
> x = 1:3
> x[1:5]
[1] 1 2 3 NA NA
我想要的是x[1:5]
返回[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?
答案 0 :(得分:1)
为了确保您没有索引超过向量的末尾,您可以执行以下操作:
x[1:(min(5, length(x)))]
答案 1 :(得分:1)
x[!is.na(x[1:2])]
[1] 1 2 3 # where's that coming from?
这来自回收
is.na(X)
返回一个长度等于其参数X
的逻辑向量。由于没有NA
s这个向量都是TRUE
s。这些值(同样,所有TRUE
)都会被回收到x
的长度(括号外x
,x[ . ]
)
至于从x中选择,不超过x的长度,请使用head
和tail
作为评论中提到的@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