2014-10-05 236 views
0

我有一個data frame我構造如下:分配一個已填充的矩陣到一個未填充的矩陣

m <- matrix("matrix", nrow = 2, ncol = 2) 
dm <- data.frame(m) 

我的理解是,這將使得dm的數據幀具有2列和2行,其中的每個元素將是一個矩陣。我的問題是,我有一個方法返回一個包含一串數字的矩陣,但是當我嘗試將此矩陣分配給其中一個「空」矩陣時,可以使用下面的代碼:dm GetPopulatedMatrix()

我得到以下錯誤:

replacement has 873 rows, data has 1

我假設這是因爲我想分配給矩陣不是大小,因爲這是矩陣相同由GetPopulatedMatrix返回,但我不知道如何初始化dm與4個矩陣(假設2x2 data frame)的正確大小。假設我會提前知道由GetPopulatedMatrix返回的矩陣的確切維數。任何想法如何我可以初始化dm,以便我稍後能夠爲其元素分配填充矩陣?

我知道如何用指定數量的行和列初始化matrix,當矩陣是data frame或其他集合的元素時,我只是不知道該怎麼做。

提前致謝!我是R新手,所以我確信這是一個愚蠢的問題,但這是在我被迫沮喪地摧毀我的電腦之前的最後一招。

回答

1

你有關的dm內容第一個假設是錯誤的。您的矩陣m是一個2x2矩陣,每個單元包含字符串「矩陣」。 dm具有相同的內容,但是是data.frame

當每次調用GetPopulatedMatrix()都會返回一個矩陣,但您並不知道這些矩陣的維數時,我建議您將結果保存在列表中。

results <- list() 
results[[1]] <- GetPopulatedMatrix() 
results[[2]] <- GetPopulatedMatrix() 
+0

有趣的,謝謝。那麼是不是可以在'data.frame'的每個單元中存儲一個矩陣,然後呢? – 2014-10-05 14:48:30

+1

號一個'data.frame'的每個單元格可以包含1個單個值(數字/字符/邏輯的)但不是很多(矩陣,列表,其它data.frames)。但是,當然,您可以創建一個100x100的矩陣,併爲其分配100個大小爲10x10的矩陣(彼此旁邊/下面)。 – 2014-10-05 17:28:55