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_Nested_Rbind - Fatal编程技术网

R 将嵌套列表转换为数据帧似乎会删除一些条目

R 将嵌套列表转换为数据帧似乎会删除一些条目,r,list,dataframe,nested,rbind,R,List,Dataframe,Nested,Rbind,我正在尝试将嵌套列表(视频详细信息)转换为数据帧。嵌套列表中的大多数信息不应该在最终的数据框中,而应该是“标记”(理想情况下是“id”)。嵌套列表有252个元素,每个元素的结构如下: $ :List of 4 ..$ kind : chr "youtube#videoListResponse" ..$ etag : chr "\"Fznwjl6JEQdo1MGvHOGaz_YanRU/wjb97SA5L1u9pjKF_Wa4GYuJoks\"" ..$

我正在尝试将嵌套列表(视频详细信息)转换为数据帧。嵌套列表中的大多数信息不应该在最终的数据框中,而应该是“标记”(理想情况下是“id”)。嵌套列表有252个元素,每个元素的结构如下:

    $ :List of 4
    ..$ kind    : chr "youtube#videoListResponse"
    ..$ etag    : chr "\"Fznwjl6JEQdo1MGvHOGaz_YanRU/wjb97SA5L1u9pjKF_Wa4GYuJoks\""
    ..$ pageInfo:List of 2
    .. ..$ totalResults  : int 1
    .. ..$ resultsPerPage: int 1
    ..$ items   :List of 1
    .. ..$ :List of 4
    .. .. ..$ kind   : chr "youtube#video"
    .. .. ..$ etag   : chr "\"Fznwjl6JEQdo1MGvHOGaz_YanRU/fJEMmhh4c330M-HX-dZXcMUN_R0\""
    .. .. ..$ id     : chr "Dod4hirL4IU"
    .. .. ..$ snippet:List of 10
    .. .. .. ..$ publishedAt         : chr "2019-11-02T13:00:04.000Z"
    .. .. .. ..$ channelId           : chr "UCa92M881KJO0FqaOUb4xAqg"
    .. .. .. ..$ title               : chr "Making Hydrogen from Water (Ft: The DIY Science Guy)"
    .. .. .. ..$ description         : chr "In which JB attempts to make an electrolytic cell for making hydrogen gas after being inspired by The DIY Scien"| __truncated__
    .. .. .. ..$ thumbnails          :List of 5
    .. .. .. .. ..$ default :List of 3
    .. .. .. .. .. ..$ url   : chr "https://i.ytimg.com/vi/Dod4hirL4IU/default.jpg"
    .. .. .. .. .. ..$ width : int 120
    .. .. .. .. .. ..$ height: int 90
    .. .. .. .. ..$ medium  :List of 3
    .. .. .. .. .. ..$ url   : chr "https://i.ytimg.com/vi/Dod4hirL4IU/mqdefault.jpg"
    .. .. .. .. .. ..$ width : int 320
    .. .. .. .. .. ..$ height: int 180
    .. .. .. .. ..$ high    :List of 3
    .. .. .. .. .. ..$ url   : chr "https://i.ytimg.com/vi/Dod4hirL4IU/hqdefault.jpg"
    .. .. .. .. .. ..$ width : int 480
    .. .. .. .. .. ..$ height: int 360
    .. .. .. .. ..$ standard:List of 3
    .. .. .. .. .. ..$ url   : chr "https://i.ytimg.com/vi/Dod4hirL4IU/sddefault.jpg"
    .. .. .. .. .. ..$ width : int 640
    .. .. .. .. .. ..$ height: int 480
    .. .. .. .. ..$ maxres  :List of 3
    .. .. .. .. .. ..$ url   : chr "https://i.ytimg.com/vi/Dod4hirL4IU/maxresdefault.jpg"
    .. .. .. .. .. ..$ width : int 1280
    .. .. .. .. .. ..$ height: int 720
    .. .. .. ..$ channelTitle        : chr "Good and Basic"
    .. .. .. ..$ tags                :List of 8
    .. .. .. .. ..$ : chr "DIY"
    .. .. .. .. ..$ : chr "diyscienceguy"
    .. .. .. .. ..$ : chr "diy science guy"
    .. .. .. .. ..$ : chr "hydrogen electrolysis"
    .. .. .. .. ..$ : chr "water splitting"
    .. .. .. .. ..$ : chr "hydrogen generator"
    .. .. .. .. ..$ : chr "Good and basic"
    .. .. .. .. ..$ : chr "splitting molecules"
    .. .. .. ..$ categoryId          : chr "22"
    .. .. .. ..$ liveBroadcastContent: chr "none"
    .. .. .. ..$ localized           :List of 2
    .. .. .. .. ..$ title      : chr "Making Hydrogen from Water (Ft: The DIY Science Guy)"
    .. .. .. .. ..$ description: chr "In which JB attempts to make an electrolytic cell for making hydrogen gas after being inspired by The DIY Scien"| __truncated__
最终输出应该是一个包含252行的数据帧(视频标签的252个元素各一行)和一列,用于所有252个元素中的每个唯一“标签”条目。以下是我到目前为止输入的内容:

    just_tags <- map(map(map(video_details_t, "items") %>%
      flatten(), "snippet"), "tags")
我假设这些对输出不重要,因为我认为它们只是将“标记”元素转换为字符而不是因子

如果转换是删除重复的行,是否有办法保留这些行,例如,用原始列表中的“id”元素标识每一行?252个元素中的每个元素正好有一个“id”元素,并且它是唯一的,因此可以使用它来描绘数据帧中252个最终输出行中的每一行


非常感谢你的帮助,如果我能说得更清楚,请告诉我

据我所知,阿克斯曼给出了正确的解决方案

    just_tags <- map(map(map(video_details_t, "items") %>%
          flatten(), "snippet"), "tags")
just_标签%
展平(),“片段”),“标记”)
需要在“map()”函数的每个阶段使用“.default=NA”参数进行修改,如下所示:

    just_tags <- map(map(map(video_details_t, "items", .default = NA) %>%
      flatten(), "snippet", .default = NA), "tags", .default = NA)
just_标签%
展平(),“snippet”,.default=NA),“tags”,.default=NA)
在这之后,跑步

        df<- rbind_all(lapply(just_tags, data.frame))

dfIt是使用
bind\u rows
而不是
rbind\u all
的警告消息,或者您可以使用
map\u dfr
map\u dfr(仅标记、数据.frame)
第二个警告是
因子
列,如果存在不相等的
因子
级别,则会导致强制到
字符
类。如果没有可复制的示例,很难帮助解决具体问题,请参阅“可能替换
df”,我怀疑这是在删除重复行,但可能是你们252个元素中的一些没有这个标签。在这种情况下,我猜你的
map(map(map
将返回
NULL
。合并结果后,您将没有行。请参阅
?map
的示例,特别是
。default
参数,查看如何将这些
NULL
值改为
NA
。@Axeman就是这样。我以为它们都有“标记”元素,但它们没有。在实现您关于“.default”参数的建议后,生成的data.frame比它应该包含的列多了一列,但我假设这是NA条目(即使我找不到它们)。无论如何,这是一个可接受的精度水平。感谢您的帮助,以及可复制示例指南的链接。(作为旁注,“map_dfr”给出了一个错误,但这并不重要,因为我得到了我想要的东西。)很高兴它得到解决。再次,请考虑将您的<代码> RBDunyALL < /COD>代码直接替换为<代码> BIDYLROWS/<代码>,或者如注释中所示的<代码> MAPYDFR变型。<代码> RbDujyALL 被禁止(正如警告告诉您的)。在将来,请提供一个可复制的例子!
    just_tags <- map(map(map(video_details_t, "items", .default = NA) %>%
      flatten(), "snippet", .default = NA), "tags", .default = NA)
        df<- rbind_all(lapply(just_tags, data.frame))