2012-09-17 60 views
35

R在循環中擴展數據結構效率不高。我如何預先分配一定大小的listmatrix通過參數ncolnrow變得很容易。在列表中如何做到這一點?例如:在R中預分配列表

x <- list() 
for (i in 1:10) { 
    x[[i]] <- i 
} 

我認爲這是低效的。有什麼更好的方法來做到這一點?

回答

49

vector可以創建所需模式和長度的空向量。

x <- vector(mode = "list", length = 10) 
4

事情是這樣的:

x <- vector('list', 10) 

但使用lapply是最好的選擇

19

要什麼@Jilber說,lapply是專門爲這種類型的操作建立擴大。

代替for循環,你可以使用:

x <- lapply(1:10, function(i) i) 

您可以擴展這個更復雜的例子。通常,for循環體中的內容可以直接轉換爲一個函數,該函數接受單個行,該行在循環的每次迭代中看起來都像一行。