應用超過5個的數據幀的線性模型...
隨着replicate
,它會像
> replicate(5, {
A <- data.frame(rnorm(5), rexp(5))
m <- lm(formula = A[,1] ~ A[,2], data = A)
c(f = summary(m)$fstatistic[1], adjR = summary(m)$adj.r.squared)
})
## [,1] [,2] [,3] [,4] [,5]
## f.value 0.4337426 1.3524681 1.17570087 3.8537837 0.04583862
## adjR -0.1649097 0.0809812 0.04207698 0.4163808 -0.31326721
你可以用t()
來包裝這個以獲得長表格矩陣。
你也可以使用廣受歡迎的do.call(rbind, lapply(...))
方法,
> do.call(rbind, lapply(seq(5), function(x){
A <- data.frame(rnorm(5), rexp(5))
m <- lm(formula = A[,1] ~ A[,2], data = A)
c(f = summary(m)$fstatistic[1], adjR = summary(m)$adj.r.squared)
}))
## f.value adjR
## [1,] 1.9820243 0.19711351
## [2,] 21.6698543 0.83785879
## [3,] 4.4484639 0.46297652
## [4,] 0.9084373 -0.02342693
## [5,] 0.0388510 -0.31628698
您還可以使用sapply
,
> sapply(seq(5), function(x){
A <- data.frame(rnorm(5), rexp(5))
m <- lm(formula = A[,1] ~ A[,2], data = A)
c(f = summary(m)$fstatistic[1], adjR = summary(m)$adj.r.squared)
})
## [,1] [,2] [,3] [,4] [,5]
## f.value 0.07245221 0.2076504 0.0003488657 58.5524139 0.92170453
## adjR -0.30189169 -0.2470187 -0.3331783000 0.9350147 -0.01996465
請記住,這些都將返回一個matrix
,所以一個as.data.frame
的包裝件可如果你想得到data.frame
結果,那麼應該是適當的。
你快到了......'replicate'可以正常工作。只需在'c()'中包裝這兩個彙總輸出。 (複製(100,{我想做的事情; c(summary(lm(formula = V1〜V2,data = A))$ fstatistic [1],summary(lm(formula = V1〜V2,data = A)) $ adj.r.squared)})' – jbaums