我使用ExtremeBounds包,其提供作为结果与多级列表(其中包括)在最低层dataframes深处列表。我在几个规格运行此包,我想收集选定dataframes的一些列在了这些结果。这些应该由规范(SPEC1和SPEC2在下面的示例)被收集并布置在dataframes的列表。 dataframes的这个列表然后可以用于所有类型的东西,例如不同规格的结果导出到不同的Excel表。R:ADRESS对象与内部功能/环(ExtremeBounds封装)过滤命令
下面是一些代码,创建有问题的对象(只需运行该代码盲目的,我的问题只涉及如何处理那种它创建列表:eba_results):
library("ExtremeBounds")
Data <- data.frame(var1=rbinom(30,1,0.2),var2=rbinom(30,2,0.2),
var3=rnorm(30),var4=rnorm(30),var5=rnorm(30))
spec1 <- list(y=c("var1"),
freevars=c("var2"),
doubtvars=c("var3","var4"))
spec2 <- list(y=c("var1"),
freevars=c("var2"),
doubtvars=c("var3","var4","var5"))
indicators <- c("spec1","spec2")
ebaFun <- function(x){
eba <- eba(data=Data, y=x$y,
free=x$freevars,
doubtful=x$doubtvars,
reg.fun=glm, k=1, vif=7, draws=50, weights = "lri", family = binomial(logit))}
eba_results <- lapply(mget(indicators),ebaFun) #eba_results is the object in question
手动我知道如何访问每一个元素,例如:
eba_results$spec1$bounds$type #look at str(eba_results) to see the different levels
因此,“边界”是具有两个SPEC1和SPEC2相同列名的数据帧。我想从 “边界” 收集以下5列:
类型,cdf.mu.normal,cdf.above.mu.normal,cdf.mu.generic,cdf.above.mu.generic
为每一个规格数据帧。手动,这是简单的,但很丑:
collectedManually <-list(
manual_spec1 = data.frame(
type=eba_results$spec1$bounds$type,
cdf.mu.normal=eba_results$spec1$bounds$cdf.mu.normal,
cdf.above.mu.normal=eba_results$spec1$bounds$cdf.above.mu.normal,
cdf.mu.generic=eba_results$spec1$bounds$cdf.mu.generic,
cdf.above.mu.generic=eba_results$spec1$bounds$cdf.above.mu.generic),
manual_spec2= data.frame(
type=eba_results$spec2$bounds$type,
cdf.mu.normal=eba_results$spec2$bounds$cdf.mu.normal,
cdf.above.mu.normal=eba_results$spec2$bounds$cdf.above.mu.normal,
cdf.mu.generic=eba_results$spec2$bounds$cdf.mu.generic,
cdf.above.mu.generic=eba_results$spec2$bounds$cdf.above.mu.generic))
但我有2种以上规格的,我想这应该是可能的lapply功能于一身漂亮的方式。任何帮助,将不胜感激!
PS:一个普通的例子hrbrmstr的回答适用的,但它竟然是过于简单化了:
exampleList = list(a=list(aa=data.frame(A=rnorm(10),B=rnorm(10)),bb=data.frame(A=rnorm(10),B=rnorm(10))),
b=list(aa=data.frame(A=rnorm(10),B=rnorm(10)),bb=data.frame(A=rnorm(10),B=rnorm(10))))
,我想有一个对象,收集,例如,所有的A和乙载体引入两个数据帧(每个具有其各自的A和B),它们然后数据帧的列表。手动,这将是这样的:
dfa <- data.frame(A=exampleList$a$aa$A,B=exampleList$a$aa$B)
dfb <- data.frame(A=exampleList$a$aa$A,B=exampleList$a$aa$B)
collectedResults <- list(a=dfa, b=dfb)
什么是你想要的输出了这一切? –
数据帧列表 –