2012-09-26 111 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