我到處都在讀到你不應該在 R 中使用 for 回圈,而應該“矢量化”。然而,我發現 for 回圈很直觀,并且難以轉換我的代碼。
我有一個要多次使用的函式 f1。該函式的輸入位于名為 l1 的串列中。我的 f1 輸出一個 df。我想將這些輸出 dfs 合并為一個 df。我現在擁有的 for 回圈是這樣的:
z3 <- data.frame()
for(i in l1) {
z3 <- rbind(z3, f1(i))
}
誰能幫我做同樣的事情,但沒有for回圈?
uj5u.com熱心網友回復:
您可以使用lapply()
, 和do.call()
do.call(rbind, lapply(l1, f1))
uj5u.com熱心網友回復:
另一種更詳細的方法:
## function that returns a 1 x 2 dataframe:
get_fresh_straw <- function(x) data.frame(col1 = x, col2 = x * pi)
l1 = list(A = 1, B = 5, C = 2)
Reduce(l1,
f = function(camel_back, list_item){
rbind(camel_back, get_fresh_straw(list_item))
},
init = data.frame(col1 = NULL, col2 = NULL)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470701.html