gpt4 book ai didi

r - 在函数内访问列表的元素

转载 作者:行者123 更新时间:2023-12-02 00:06:14 24 4
gpt4 key购买 nike

我发现了一个有用的函数,我一直在 R 中使用它来访问线性模型的 F 统计量 p 值

lmp<-function(modelobject){

if(class(modelobject !="lm" stop ("Not an object of class 'lm ")
f<-(modelobject)$fstatistic
p<-pf(f[1],f[2],f[3],lower.tail=F)
attributes(p)<-NULL
return(p)

}

但是,我需要使用此函数的数据不是类 lm 的对象,而是包含 12 个元素的列表。列表的每个元素都是从 lm 生成的摘要。列表数据中的每个摘要,都可以使用

访问
data[[1]]$fstatistic

我想更改函数以遍历列表中的每个元素并返回 F 统计 p 值,我尝试修改函数以包含 for 循环, lmpmod<-函数(模型对象){

for (i in 1:12) {
f<-(modelobject)[[i]]$fstatistic
p<-pf(f[1], f[2], f[3], lower.tail=F)
attributes(p)<-NULL
return(p)

}
}

但输出不断覆盖自己。谁能告诉我如何修改此函数以便我可以访问列表中的每个元素并计算 F 统计量 p 值?

最佳答案

尝试

lapply( data , function(x) { tmp <-  summary(x)$fstatistic ;
pf( tmp[1] , tmp[2] , tmp[3] , lower.tail = F )
} )

例如……

#  non-sensical lm!
set.seed(123)
y <- 1 + rnorm(10)

# this makes a list of 5 lm's using the response data 'y'
data <- replicate( 5 , lm( y ~ 1 + rnorm(10) ) , simpl = FALSE )

# Call 'summary' on model object to calculate the f-statistic, and run 'pf' to get p-value
sapply( data , function(x) { f <- summary(x)$fstatistic ; pf(f[1], f[2], f[3], lower.tail=F) } )
value value value value value
0.53263166 0.03896285 0.70298727 0.57721440 0.45352619

关于r - 在函数内访问列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com