2012-09-26 112 views
1

是否有可能在R中有1行的矩阵?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个元素,而除了1行外的所有元素都只有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 
+1

当然你可以有一个只有1行的矩阵。例如,矩阵(1:4,nrow = 1)' –

+0

是的,但它不会立即转换为数字吗?或者至少在我的代码中似乎是这种情况 – Arg

回答

10

你需要指定drop = FALSE停止R矩阵或阵列胁迫所具有的尺寸尽可能少。有关更多详情,请参阅?`[`

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

谢谢,这是问题!程序员如何在没有计算器的情况下生活:) – Arg

+0

他们阅读手册/帮助文件/ [FAQ](http://cran.r-project.org/doc/FAQ/R-FAQ.html)。 – mnel

+0

谢谢!多年来我一直在苦苦挣扎(RTFM,对吗?)。有什么方法可以将此(drop = F)作为默认行为? – morispaa

3

当然是,帕特里克李,指出在评论,但如果您使用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