5

是否可以在 R 中有一个只有 1 行的矩阵?

这是我的代码:

   nas <- which(!is.na(y))   
   x <- x[nas,]
   y <- y[nas]

   ...
   data.frame(y,x)

这个想法是我有一个向量y和矩阵x。Y 可以包含一些 NA 值,我想从向量和矩阵中找到并删除这些值的索引。

后来我想用x框住y。然而,问题是,当 y 中只有一个值不是 NA 时。这意味着我必须从 y 中删除除 1 之外的所有元素,从 x 中删除除 1 行之外的所有元素,这具有只有 1 行的矩阵,这似乎被转换为数字,这似乎破坏了 data.frame 操作。我希望它返回包含 1 行的帧:y x1 x2 ..,而不是我得到:

   y    x
1  0 12.0
2  0 14.8
3  0 14.2
4  0 14.8
5  0  2.0
6  0  4.0
7  0  1.0
8  0  2.0
9  0 26.0
10 0  4.0
11 0  6.0
12 0  2.0
13 0 16.0
4

2 回答 2

24

您需要指定drop = FALSE停止R将矩阵或数组强制为尽可能少的维数。有关?`[`更多详细信息,请参阅。

x <- matrix(1:4,ncol=2)
x[1,]
## [1] 1 2
x[1,,drop=F]
##      [,1] [,2]
## [1,]    1    3
于 2012-09-26T12:29:03.410 回答
3

当然,正如 Patrick Li 在评论中指出的那样,但如果您使用该vector()函数创建它,则不是。

所以:

R> matrix(1:4, nrow=1)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
R> matrix(1:4, ncol=1)
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
R> matrix(1:4, ncol=2)
     [,1] [,2]
[1,]    1    3
[2,]    2    4
R>     

有关使用的更多选项matrix(),请参阅其帮助页面。有关非常基本的问题的更多信息(提示:)drop=FALSE,请参阅R 常见问题解答

于 2012-09-26T12:29:19.843 回答