1

我正在使用管道工 api 作为 api。我有多个子表,其中所有表都与主键(study_id)连接,我想将所有表与单个主键合并以形成一个表。有些表有不同的长度

例如:- countries_of_origin_table 和 countries_of_recruitment_table 有不同的长度表

library(plumber)
library(tibble)
library(gwasrapidd)
library(dplyr)

#* @get /Studies 

detailData <- function(query = ""){
  print(query)
  studies <- get_studies(efo_trait = query)
  
  study <- studies@studies
  study
            
  publication <- studies@publications
  publication
  
  genotyping_techs_table <- studies@genotyping_techs
  genotyping_techs_table
  
  platforms_table <- studies@platforms 
  platforms_table
  
  ancestries_table <- studies@ancestries
  ancestries_table
  
  ancestral_groups_table <- studies@ancestral_groups
  ancestral_groups_table
  
  countries_of_origin_table <- studies@countries_of_origin
  countries_of_origin_table
  
  countries_of_recruitment_table <- studies@countries_of_recruitment
  countries_of_recruitment_table
  
  Studies_table = list(study, genotyping_techs_table, platforms_table,
   ancestries_table, ancestral_groups_table, countries_of_recruitment_table,
   countries_of_origin_table ,publication)
 

我试过这个来合并所有表但没有用

collection <- merge(study, genotyping_techs_table, platforms_table,
                      ancestries_table, ancestral_groups_table, countries_of_recruitment_table,
                      countries_of_origin_table ,publication, by = "study_id" ,all=TRUE)
  
collection

请帮我

先感谢您

4

1 回答 1

2

根据?merge,它一次只允许两个数据集加入

合并(x,y,...)

在哪里

x, y - 数据帧或要强制为 1 的对象。

一个选项是将数据集放在 a 中list并用于Reduce执行顺序连接

lst1 <- list(study, genotyping_techs_table, platforms_table,
                  ancestries_table, ancestral_groups_table, 
         countries_of_recruitment_table,
                  countries_of_origin_table ,publication)

out <- Reduce(function(...) merge(..., by = "study_id" , all = TRUE), lst1)
于 2020-12-27T19:29:59.590 回答