我试图提取一个更大矩阵的子矩阵,只包含第一行n
行:
> first.rows <- function(x, n) {
+ x[1:n,]
+ }
> x <- matrix(1:6, 3, 2)
> first.rows(x, 2)
[,1] [,2]
[1,] 1 4
[2,] 2 5
如上所示,天真的方法很有效,除非n
小于2:
> first.rows(x, 1)
[1] 1 4
对于n == 1
,我突然得到一个向量而不是矩阵!我可以使用matrix(x[1:n,], n, ncol(x))
来解决这个问题,但这看起来不必要地复杂化了。有没有办法在没有矩阵向量矩阵往返的情况下解决这个问题? (也许甚至可以为n == 0
工作?)
答案 0 :(得分:3)
我们需要使用drop = FALSE
来处理默认情况下只有一行的情况[
(请检查?Extract
)它使用drop = TRUE
与subset
不同}
first.rows <- function(x, n) {
x[seq_len(n),, drop = FALSE]
}
除此之外,对于可以seq_len(n)
1:n
代替n=0