我正在嘗試將線性回歸應用于資料框串列,過濾特定值。例如,有一個 Iris 資料框串列,我試圖對 運行回歸Sepal.Length ~ Sepal.Width,每個物種運行不同的回歸。
test <- dlply(iris, "Species", function(x) lm(Sepal.Length ~ Sepal.Width, data = x))
但我想同時對資料框串列執行此操作,而不是單獨執行。所以,假設我有一個包含多個 iris 資料框的串列:
iris1 <- iris
iris2 <- iris
iris3 <- iris
iris_list <- list(iris1, iris2, iris3)
因此,要將 dlply 代碼運行到iris_list,我迷路了。
uj5u.com熱心網友回復:
使用lapply,
res = lapply(iris_list, function(x){
test <- dlply(x, "Species", function(x) lm(Sepal.Length ~ Sepal.Width, data = x))
return(test)
})
uj5u.com熱心網友回復:
咕嚕嚕
purrr::map如果要跨資料框串列應用回歸,請嘗試使用:
library(purrr)
map(iris_list, ~ lm(Sepal.Length ~ Sepal.Width, data = .x))
如果您想根據可以split首先從基礎 R使用的因子將資料框拆分為串列:
imap(split(iris, ~ Species), ~ lm(Sepal.Length ~ Sepal.Width, data = .x))
注意:imap在這種情況下用于保留串列名稱,即Species在這種情況下的級別。
基數R
如果您只想使用基礎 R,lapply那么這將起作用:
lapply(split(iris, ~ Species), function(x) lm(Sepal.Length ~ Sepal.Width, data = x))
如果您有嵌套串列,則需要嵌套映射:
library(purrr)
map(iris_list, ~ imap(split(.x, ~ Species), ~ lm(Sepal.Length ~ Sepal.Width, data = .x)))
再次在基礎 R 中:
lapply(iris_list, function(x) lapply(split(x, ~ Species), function(y) lm(Sepal.Length ~ Sepal.Width, data = y)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318531.html
上一篇:面板資料的增量求和值
