2013-04-18 53 views
2

所以我知道,如果您有:在矩陣[]操作[R

m = matrix(1:9, 3,3) 
z = as.matrix(expand.grid(1:3, 1:3)) 

和你做

m[z] 
# you get back 1 2 3 4 5 6 7 8 9 

但是,如果你

m[] = m[z] 
# You get back a matrix.. 

我是對於這個[]運營商有什麼困惑?爲什麼犯規像m[][z]m[z][]返回一個矩陣?我怎麼會得到它返回矩陣沒有分配給一個變量m[]

謝謝!

+0

你期望擺脫'M [Z]'回來?不一致在哪裏?請記住,在R A'matrix'只是一個'VECTOR'與尺寸... – Justin

+0

嗯,我期待一個矩陣。我知道它會返回一個向量。但不是像vector:'matrix(vector,nrow,ncol)'這樣的向量創建一個新的矩陣,我找到了這個有用的運算符。我只是找不到任何文件上 – by0

+4

的文檔「[」可與'?Extract'或'?「[」'中找到。如果你想避免其他常見的陷阱,應該仔細研究,我會建議至少5個完整的讀數。 –

回答

2

這裏的關鍵是,當參數「[]」(這是一個真正的函數)是你提供一個兩列的矩陣,其結果將是一個向量,其中第一列指定的行和第二列指定操作後矩陣中的列。這是該語言的一個「特徵」(我可能會添加一個非常方便的特徵)。

的參數可能會或可能不包含所有行和列的可能的組合,這樣的結果就不會預見的是東西,會理智是同一維度的矩陣。形式:m[] <- m[ z[1:4, ] ]將產生一個結果,但也是一個警告。你應該看看結果,然後努力瞭解發生了什麼。