Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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 分析数据帧列表中的数据帧,并将所有结果存储在单个数据帧中_R_For Loop_Lapply - Fatal编程技术网

R 分析数据帧列表中的数据帧,并将所有结果存储在单个数据帧中

R 分析数据帧列表中的数据帧,并将所有结果存储在单个数据帧中,r,for-loop,lapply,R,For Loop,Lapply,我想分析数据帧列表中的单个数据帧,然后将每个单独分析的结果存储在新的数据帧中。任何建议都很好,我已经尝试了lappy()和for循环,但两种方法都无法奏效 我有一个数据帧列表: d1 <- data.frame(exposure = c("e1", "e2", "e3"), outcome = c("o1", "o2", "o3"), b = c(1,1,1), lci

我想分析数据帧列表中的单个数据帧,然后将每个单独分析的结果存储在新的数据帧中。任何建议都很好,我已经尝试了
lappy()
for循环
,但两种方法都无法奏效


我有一个数据帧列表:

d1 <- data.frame(exposure = c("e1", "e2", "e3"), outcome = c("o1", "o2", "o3"), b = c(1,1,1), lci = c(0.5,0.5,0.5), uci = c(1.5,1.5,1.5), p = c(0.05, 0.05, 0.05), id = c("e1_o1", "e2_02", "e3_03"))
d2 <- data.frame(exposure = c("e1", "e2", "e3"), outcome = c("o1", "o2", "o3"), b = c(1,1,1), lci = c(0.5,0.5,0.5), uci = c(1.5,1.5,1.5), p = c(0.05, 0.05, 0.05), id = c("e1_o1", "e2_02", "e3_03"))
data_list <- list(d1, d2)

d1你就快到了。您可以像这样使用
lappy

results <- do.call(rbind,lapply(1:length(data_list), function(x) {
  results = metagen(data = data_list[[x]], TE = b, pval = p, level.ci = 0.95, lower = lci, upper = uci,
          studlab = id, method.tau = "PM", sm = "MD", hakn = F, adhoc.hakn = "ci", title = data_list[[x]]$id[1]);
  data.frame(title = results$title,
                    fe_effect = results$TE.fixed,
                    fe_lower = results$lower.fixed,
                    fe_upper = results$upper.fixed,
                    fe_p = results$pval.fixed,
                    re_effect = results$TE.random,
                    re_lower = results$lower.random,
                    re_upper = results$upper.random,
                    re_p = results$pval.random,
                    q = results$Q,
                    q_df = results$df.Q,
                    q_p = results$pval.Q,
                    tau2 = results$tau2,
                    tau2_se = results$se.tau2,
                    tau = results$tau,
                    h = results$H,
                    i1 = results$I2)
}))

你就快到了。您可以像这样使用
lappy

results <- do.call(rbind,lapply(1:length(data_list), function(x) {
  results = metagen(data = data_list[[x]], TE = b, pval = p, level.ci = 0.95, lower = lci, upper = uci,
          studlab = id, method.tau = "PM", sm = "MD", hakn = F, adhoc.hakn = "ci", title = data_list[[x]]$id[1]);
  data.frame(title = results$title,
                    fe_effect = results$TE.fixed,
                    fe_lower = results$lower.fixed,
                    fe_upper = results$upper.fixed,
                    fe_p = results$pval.fixed,
                    re_effect = results$TE.random,
                    re_lower = results$lower.random,
                    re_upper = results$upper.random,
                    re_p = results$pval.random,
                    q = results$Q,
                    q_df = results$df.Q,
                    q_p = results$pval.Q,
                    tau2 = results$tau2,
                    tau2_se = results$se.tau2,
                    tau = results$tau,
                    h = results$H,
                    i1 = results$I2)
}))
尝试
do.call()

库(meta)
d1尝试
do.call()

库(meta)
d1
results <- do.call(rbind,lapply(1:length(data_list), function(x) {
  results = metagen(data = data_list[[x]], TE = b, pval = p, level.ci = 0.95, lower = lci, upper = uci,
          studlab = id, method.tau = "PM", sm = "MD", hakn = F, adhoc.hakn = "ci", title = data_list[[x]]$id[1]);
  data.frame(title = results$title,
                    fe_effect = results$TE.fixed,
                    fe_lower = results$lower.fixed,
                    fe_upper = results$upper.fixed,
                    fe_p = results$pval.fixed,
                    re_effect = results$TE.random,
                    re_lower = results$lower.random,
                    re_upper = results$upper.random,
                    re_p = results$pval.random,
                    q = results$Q,
                    q_df = results$df.Q,
                    q_p = results$pval.Q,
                    tau2 = results$tau2,
                    tau2_se = results$se.tau2,
                    tau = results$tau,
                    h = results$H,
                    i1 = results$I2)
}))
> results
  title fe_effect  fe_lower fe_upper         fe_p re_effect  re_lower re_upper         re_p q q_df q_p tau2    tau2_se tau h i1
1 e1_o1         1 0.7113249 1.288675 1.125116e-11         1 0.7113249 1.288675 1.125116e-11 0    2   1    0 0.06507944   0 1  0
2 e1_o1         1 0.7113249 1.288675 1.125116e-11         1 0.7113249 1.288675 1.125116e-11 0    2   1    0 0.06507944   0 1  0
library(meta)

d1 <- data.frame(exposure = c("e1", "e2", "e3"), outcome = c("o1", "o2", "o3"), b = c(1,1,1), lci = c(0.5,0.5,0.5), uci = c(1.5,1.5,1.5), p = c(0.05, 0.05, 0.05), id = c("e1_o1", "e2_02", "e3_03"))
d2 <- data.frame(exposure = c("e1", "e2", "e3"), outcome = c("o1", "o2", "o3"), b = c(1,1,1), lci = c(0.5,0.5,0.5), uci = c(1.5,1.5,1.5), p = c(0.05, 0.05, 0.05), id = c("e1_o1", "e2_02", "e3_03"))
data_list <- list(d1, d2)

table_list <- NULL

for(i in 1:length(data_list)) {
  results <- metagen(data = data_list[[i]], TE = b, pval = p, level.ci = 0.95, lower = lci, upper = uci, studlab = id, method.tau = "PM", sm = "MD", hakn = F, adhoc.hakn = "ci", title = data_list[[i]]$id[i])
  table_list[[i]] <- data.frame(title = results$title,
                                fe_effect = results$TE.fixed,
                                fe_lower = results$lower.fixed,
                                fe_upper = results$upper.fixed,
                                fe_p = results$pval.fixed,
                                re_effect = results$TE.random,
                                re_lower = results$lower.random,
                                re_upper = results$upper.random,
                                re_p = results$pval.random,
                                q = results$Q,
                                q_df = results$df.Q,
                                q_p = results$pval.Q,
                                tau2 = results$tau2,
                                tau2_se = results$se.tau2,
                                tau = results$tau,
                                h = results$H,
                                i1 = results$I2)
}

table = do.call(rbind,table_list)