R和矩阵有1行

时间:2012-09-26 12:25:28

标签: r

是否可以在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

2 个答案:

答案 0 :(得分:12)

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

x <- matrix(1:4,ncol=2)
x[1,]
## [1] 1 2
x[1,,drop=F]
##      [,1] [,2]
## [1,]    1    3

答案 1 :(得分: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 FAQ