2015-10-04 148 views
0

我想在不使用for循環的情況下製作矩陣,例如for,while。 所以我試着分配k並把k放在做矩陣的函數中。在R中製作矩陣

powlist= function(base,startnum,endnum) (base)^(startnum:endnum) 

m_maker= function(base) matrix(c(powlist(base,0,19)),4,5) 

k= 2:10 
a= m_maker((k-1)/k) 

但函數只返回一個矩陣。 我覺得函數應該返回9個矩陣。 請讓我知道如何更改此代碼。

我想使各矩陣的是第一個是矩陣m_maker(1/2)和 第二個m_maker(2/3)等。 當我每次把k=2k=3,它返回我想要的。 我想要的是一次返回9個矩陣的方法。

+0

請顯示您所需的輸出(作爲R對象,我們可以讀入R)。可能需要縮小示例的大小。順便說一句,你的'm_maker'函數不適用於任何輸入,所以你可能想在嘗試像這樣使用它之前檢查它。 – Frank

+0

你的問題之一是'm_maker'中的矩陣不適合。嘗試'm_maker(1/2)'給出一個20x20矩陣和'c(powlist(1/2,0,20))'給出一個21元素的向量。 – Henry

回答

1

您正在尋找lapply,像

res <- lapply((k-1)/k, m_maker) 

但是,你真的應該使用數組這樣的事情。

ares <- abind(res, along=3) 
+0

我想製作第一個矩陣m_maker(1/2)和第二個矩陣m_maker(2/3)等。當我每次放k = 2和k = 3時,它會返回我想要的。我想要的是一次返回九個矩陣的方法。 – kdino