Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 创建数据帧列表,显示嵌套模型列表中的AICc值_R_List_Lapply - Fatal编程技术网

R 创建数据帧列表,显示嵌套模型列表中的AICc值

R 创建数据帧列表,显示嵌套模型列表中的AICc值,r,list,lapply,R,List,Lapply,我有一个统计模型列表: ###Data import Responses <- as.data.frame(matrix(sample(0:10, 1*100, replace=TRUE), ncol=2)) colnames(Responses) <- c("A","B") Explanatories <- as.data.frame(matrix(sample(20:30, 1*100, replace=TRUE), ncol=2)) colnames(Explanator

我有一个统计模型列表:

###Data import
Responses <- as.data.frame(matrix(sample(0:10, 1*100, replace=TRUE), ncol=2))
colnames(Responses) <- c("A","B")
Explanatories <- as.data.frame(matrix(sample(20:30, 1*100, replace=TRUE), ncol=2))
colnames(Explanatories) <- c("x","y")

###Create models
Models <- list(
lm(Responses$A ~ Explanatories$x),
lm(Responses$B ~ log10(Explanatories$x)),
lm(Responses$B ~ exp(Explanatories$y))
)
数据导入
响应这只是
*apply
功能的应用。我选择了
sapply
,因为如果可能的话,它会返回一个向量

Full <- sapply(Models, aicc)
Null <- sapply(Models_null, aicc)
df_aicc <- data.frame(Full, Null)

df_aicc
#      Full     Null
#1 269.7858 268.5274
#2 254.6533 253.0980
#3 254.8408 253.0980

这里有一个双
sapply

sapply(All_models, sapply, aicc)
#          full      res
# [1,] 267.4959 266.0534
# [2,] 251.9809 251.9127
# [3,] 253.5760 251.9127
第一个
sapply
仅适用于
Models
Models\u null
。然后自然地,对于这两个列表中的每一个,我们再次希望应用
sapply
,其中对于每个模型,我们将使用
aicc
。这正是@Rui Barradas的解决方案,仅在一行中

当然,如果需要,之后可以将结果转换为数据帧


相反,要获取元素为上述矩阵行的列表,可以使用以下三种方法之一:

lapply(seq_along(Models), function(i) 
  data.frame(full = aicc(Models[[i]]), null = aicc(Models_null[[i]])))

Map(data.frame, full = lapply(Models, aicc), null = lapply(Models_null, aicc))

do.call(Map, c(data.frame, lapply(All_models, sapply, aicc)))

太好了,谢谢!那么,您将如何将df_aicc拆分为数据帧列表?所以我会有一个包含三个数据帧的列表,每个数据帧有1行(每个模型)和2列(完整和空)?@JamesWhite Done,请参见结尾。这太棒了,谢谢!但是如何为每一行创建数据帧列表呢?所以我会有一个包含三个数据帧的列表,每个数据帧有1行(每个模型)和2列(完整和空)?@JamesWhite,我会在有机会的时候更新我的答案!仅对于此类数据而言,这是一种最佳格式,但我知道您希望向每个数据帧添加一些额外的结果。@JamesWhite,添加了3个选项。
list_aicc <- split(df_aicc, row.names(df_aicc))
list_aicc
#$`1`
#      Full     Null
#1 269.7858 268.5274
#
#$`2`
#      Full    Null
#2 254.6533 253.098
#
#$`3`
#      Full    Null
#3 254.8408 253.098
sapply(All_models, sapply, aicc)
#          full      res
# [1,] 267.4959 266.0534
# [2,] 251.9809 251.9127
# [3,] 253.5760 251.9127
lapply(seq_along(Models), function(i) 
  data.frame(full = aicc(Models[[i]]), null = aicc(Models_null[[i]])))

Map(data.frame, full = lapply(Models, aicc), null = lapply(Models_null, aicc))

do.call(Map, c(data.frame, lapply(All_models, sapply, aicc)))