• R语言
  • R语言怎么批量对数据使用函数?当数据格式不是数据框、列表等基本数据格式时。

想对某数据按某一因子、分层次地批量使用函数,
但发现lapply、apply等函数似乎只能处理数据框、列表,而不能处理这种“模型格式”的数据?
不知道是不是只能用for循环了?
【例】

library(meta)
testdata <- Olkin1995 #这个是meta包里自带的数据集
testdata <- dplyr::mutate(testdata, group = rep(LETTERS[1:7],10), .before=1)

model <- metabin(data = testdata,
event.e = ev.exp, event.c = ev.cont, studlab = testdata$author,
n.e = n.exp, n.c = n.cont,
subgroup = group, method = "MH", sm = "OR",
common = T, random = F, overall = F , overall.hetstat = F,
test.subgroup = F,)

funnel(model)#这个是我想用的函数。我想按A-G分成7个组,批量使用这个函数

df_split <- split(testdata, testdata$group)

for (i in 1:7){
  model <- metabin(data = df_split[[i]],
                   event.e = ev.exp, event.c = ev.cont, studlab = df_split[[i]]$author,
                   n.e = n.exp, n.c = n.cont,
                   # subgroup = group, 
                   method = "MH", sm = "OR",
                   common = T, random = F, overall = F , overall.hetstat = F,
                   test.subgroup = F,)
  
  funnel(model)
  title(paste("group",LETTERS[i]))
}

也可以将df_split用做lapply()参数,应该是类似的。
另外tapply()好像是整合split()lapply(),算是一个函数完成两个操作的

    5 天 后

    dryezl 那后面好像还是要用for循环,前面生成列表那一步倒还不难。
    嘿嘿我最后也自己写出来了,跟你的代码差不多(击掌)