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