R在循環中擴展數據結構效率不高。我如何預先分配一定大小的list
? matrix
通過參數ncol
和nrow
變得很容易。在列表中如何做到這一點?例如:在R中預分配列表
x <- list()
for (i in 1:10) {
x[[i]] <- i
}
我認爲這是低效的。有什麼更好的方法來做到這一點?
R在循環中擴展數據結構效率不高。我如何預先分配一定大小的list
? matrix
通過參數ncol
和nrow
變得很容易。在列表中如何做到這一點?例如:在R中預分配列表
x <- list()
for (i in 1:10) {
x[[i]] <- i
}
我認爲這是低效的。有什麼更好的方法來做到這一點?
vector
可以創建所需模式和長度的空向量。
x <- vector(mode = "list", length = 10)
事情是這樣的:
x <- vector('list', 10)
但使用lapply是最好的選擇
要什麼@Jilber說,lapply
是專門爲這種類型的操作建立擴大。
代替for循環,你可以使用:
x <- lapply(1:10, function(i) i)
您可以擴展這個更復雜的例子。通常,for循環體中的內容可以直接轉換爲一個函數,該函數接受單個行,該行在循環的每次迭代中看起來都像一行。