Я пытаюсь преобразовать вложенный список (video_details_t) во фрейм данных. Большая часть информации во вложенном списке не должна находиться в конечном фрейме данных, это просто «теги» (и в идеале «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 элементов video_tags_t) и столбцом для каждой уникальной записи тега по всем 252 элементам. Вот что я ввел до сих пор:
just_tags <- map(map(map(video_details_t, "items") %>%
flatten(), "snippet"), "tags")
Это дает мне вложенный список с 252 элементами, и каждый элемент представляет собой вектор, содержащий все теги. Все идет нормально. Далее я использую следующее, чтобы преобразовать его во фрейм данных:
df<- rbind_all(lapply(just_tags, data.frame))
Это дает мне фрейм данных с 2165 столбцами, по одному на каждый тег, именно то, что я хочу. Но фрейм данных имеет только 238 строк, когда он должен иметь 252 (по одной на каждый элемент just_tags). Что здесь происходит? Это удаляет повторяющиеся строки во время преобразования?
Я также получаю следующий вывод:
Warning messages:
1: 'rbind_all' is deprecated.
Use 'bind_rows()' instead.
See help("Deprecated")
2: In bind_rows_(x, id = id) :
Unequal factor levels: coercing to character
3: In bind_rows_(x, id = id) :
binding character and factor vector, coercing into character vector
4: In bind_rows_(x, id = id) :
binding character and factor vector, coercing into character vector
5: In bind_rows_(x, id = id) :
binding character and factor vector, coercing into character vector
Я предполагаю, что они не имеют значения для вывода, так как я думаю, что они просто преобразовывая элементы «тегов» в символы вместо факторов.
Если при преобразовании удаляются повторяющиеся строки, существует ли способ сохранить их, скажем, путем идентификации каждой строки с помощью элемента «id» из оригинала список? Каждый из 252 элементов имеет ровно один элемент «id», и он уникален, поэтому его можно использовать для разграничения каждой из 252 конечных выходных строк во фрейме данных.
Большое спасибо за вашу помощь и, пожалуйста, позвольте мне знай, смогу ли я сделать что-то яснее!