Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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/1/list/4.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_List_Dataframe_Dplyr_Lapply - Fatal编程技术网

R 将数据帧列表转换为数据帧

R 将数据帧列表转换为数据帧,r,list,dataframe,dplyr,lapply,R,List,Dataframe,Dplyr,Lapply,我通过查询SQL数据库制作了一个数据帧列表。dputlist_df[1:5]给出 资料 我想将只包含1行和5列的list_df数据帧绑定到一个新的dataframe,new_df,这样new_df[I,]==list[I] 对于具有0行或多于1行的对象,NA就可以了。我们可以在没有data.frame的位置创建一个data.frame,然后绑定它 library(purrr) map_dfr(list_df, ~ if(!is.data.frame(.x) | nrow(data.frame(.

我通过查询SQL数据库制作了一个数据帧列表。dputlist_df[1:5]给出

资料

我想将只包含1行和5列的list_df数据帧绑定到一个新的dataframe,new_df,这样new_df[I,]==list[I]

对于具有0行或多于1行的对象,NA就可以了。

我们可以在没有data.frame的位置创建一个data.frame,然后绑定它

library(purrr)
map_dfr(list_df, ~ if(!is.data.frame(.x) | nrow(data.frame(.x)) != 1) data.frame(associated_gene = NA) else .x)
#associated_gene    refsnp_id                                        allele chrom_start chrom_end
#1            <NA>         <NA>                                          <NA>          NA        NA
#2            <NA>  rs778387354 GTGCCCTGGACGTGGCCTCGAACCGCGTGCCCTGG/GTGCCCTGG    42692955  42692989
#3                  rs771507737                                          AT/-    42693404  42693405
#4            <NA>         <NA>                                          <NA>          NA        NA
#5          A4GALT  rs387906280                                    GGGG/GGGGG    42692923  42692926
#6            <NA> rs1296945362              GGGTGGGGTGGGG/GGGTGGGGTGGGGTGGGG    42693742  42693754
#7            <NA>  rs775626055                           GGGGGG/GGGG/GGGGGGG    42693751  42693756
我们可以创建一个data.frame,然后绑定它

library(purrr)
map_dfr(list_df, ~ if(!is.data.frame(.x) | nrow(data.frame(.x)) != 1) data.frame(associated_gene = NA) else .x)
#associated_gene    refsnp_id                                        allele chrom_start chrom_end
#1            <NA>         <NA>                                          <NA>          NA        NA
#2            <NA>  rs778387354 GTGCCCTGGACGTGGCCTCGAACCGCGTGCCCTGG/GTGCCCTGG    42692955  42692989
#3                  rs771507737                                          AT/-    42693404  42693405
#4            <NA>         <NA>                                          <NA>          NA        NA
#5          A4GALT  rs387906280                                    GGGG/GGGGG    42692923  42692926
#6            <NA> rs1296945362              GGGTGGGGTGGGG/GGGTGGGGTGGGGTGGGG    42693742  42693754
#7            <NA>  rs775626055                           GGGGGG/GGGG/GGGGGGG    42693751  42693756
plyr::rbind.fill也可以:

library(plyr)

list_df <- lapply(list_df, as.data.frame)
df <- rbind.fill(list_df)
df <- df[, -1]  # remove column X[[i]] containing "NOT FOUND"
plyr::rbind.fill也可以:

library(plyr)

list_df <- lapply(list_df, as.data.frame)
df <- rbind.fill(list_df)
df <- df[, -1]  # remove column X[[i]] containing "NOT FOUND"

如果您只想拥有具有指定维度的列表,我们可以使用过滤器


如果您只想拥有具有指定维度的列表,我们可以使用过滤器


@user171558如果您检查输出,最后两行来自list_df[[6]]@user171558是否需要map_dfrlist_df,~If!is.data.frame.x data.frameassociated_gene=NA else ifnrow.x==2 rbind.x,NA else.xSo我正在阅读文档并修改您的地图,但它不起作用。我想要这样的东西:列出\u df%>%map\u dfr~如果!is.data.frame.x&nrow.x!=1 data.frameassociated_gene=NA else。x@user171558如果您的数据集不是data.frame,那么就没有nrow,也许您需要map_dfrlist_df,~If!is.data.frame.x&length.x==1 data.frameassociated\u gene=NA else.xlist\u df%>%map\u dfr~if!is.data.frame.x | nrowdata.frame.x!=1 data.frameassociated_gene=NA else.x我现在了解了它的工作原理。我假设它给出了list_df[[6]],但是他们的for循环确实列出了list_df[6]@user171558如果你检查输出,最后两行是list_df[[6]@user171558你需要map_dfrlist_df,~If!is.data.frame.x data.frameassociated_gene=NA else ifnrow.x==2 rbind.x,NA else.xSo我正在阅读文档并修改您的地图,但它不起作用。我想要这样的东西:列出\u df%>%map\u dfr~如果!is.data.frame.x&nrow.x!=1 data.frameassociated_gene=NA else。x@user171558如果您的数据集不是data.frame,那么就没有nrow,也许您需要map_dfrlist_df,~If!is.data.frame.x&length.x==1 data.frameassociated\u gene=NA else.xlist\u df%>%map\u dfr~if!is.data.frame.x | nrowdata.frame.x!=1 data.frameassociated_gene=NA else.x我现在了解了它的工作原理。我假设它给出了list_df[[6]],但他们的for循环确实给出了list_df[6]
library(plyr)

list_df <- lapply(list_df, as.data.frame)
df <- rbind.fill(list_df)
df <- df[, -1]  # remove column X[[i]] containing "NOT FOUND"
do.call(rbind, Filter(function(x) is.data.frame(x) && nrow(x) == 1 && ncol(x) == 5, list_df))

#   associated_gene   refsnp_id                                        allele chrom_start chrom_end
#2             <NA> rs778387354 GTGCCCTGGACGTGGCCTCGAACCGCGTGCCCTGG/GTGCCCTGG    42692955  42692989
#21                 rs771507737                                          AT/-    42693404  42693405
#1           A4GALT rs387906280                                    GGGG/GGGGG    42692923  42692926
dplyr::bind_rows(lapply(list_df, function(x) 
           if (is.data.frame(x) && nrow(x) == 1 && ncol(x) == 5) x else 
                  data.frame(associated_gene = NA)))

#  associated_gene   refsnp_id                                        allele chrom_start chrom_end
#1            <NA>        <NA>                                          <NA>          NA        NA
#2            <NA> rs778387354 GTGCCCTGGACGTGGCCTCGAACCGCGTGCCCTGG/GTGCCCTGG    42692955  42692989
#3                 rs771507737                                          AT/-    42693404  42693405
#4            <NA>        <NA>                                          <NA>          NA        NA
#5          A4GALT rs387906280                                    GGGG/GGGGG    42692923  42692926
#6            <NA>        <NA>                                          <NA>          NA        NA