如何编写带有所需参数的 purrr 循环
How to write a purrr loop with required arguments
我正在尝试遍历 Youtube 视频 ID 的字符向量,应用 'tuber' 包中名为 list_caption_tracks 的函数,该函数将提取视频所具有的文字记录类型。我收到与在 list_caption_tracks 函数中指定所需的 video_id 参数相关的错误。
library(purrr)
library(tuber)
#list of youtube video IDs I want to loop through
videoid_list = c('5X1BELxYdws', 'J3Fv1pBNmFM','Oy0OD1iDi6s','QWd8szOzXgs', 'NBzmEx10xcc')
#function I want to apply to each ID - succesfully applied here to one object
list_caption_tracks(video_id = 'J3Fv1pBNmFM')
#trying to map through the ID list - throwing an error.
map(videoid_list, list_caption_tracks)
这会引发错误“.f(.x[[i]], ...) 中的错误:必须指定视频 ID。”我正在努力弄清楚如何在成功循环元素的同时指定 video_id 变量。
这是我尝试过的:
map(videoid_list, list_caption_tracks, video_id = videoid_list)
这会抛出“vapply(elements, encode, character(1)) 中的错误:值的长度必须为 1,但 FUN(X[[2]]) 结果的长度为 5”
所以我想在指定 video_id 时我需要找到一种方法来 select 每个元素,但我无法弄清楚这部分。
我们可以使用 lambda 函数 (~
) 并在 list_caption_tracks
中指定参数 'video_id'
library(purrr)
out <- map(videoid_list, ~ list_caption_tracks(video_id = .x))
我正在尝试遍历 Youtube 视频 ID 的字符向量,应用 'tuber' 包中名为 list_caption_tracks 的函数,该函数将提取视频所具有的文字记录类型。我收到与在 list_caption_tracks 函数中指定所需的 video_id 参数相关的错误。
library(purrr)
library(tuber)
#list of youtube video IDs I want to loop through
videoid_list = c('5X1BELxYdws', 'J3Fv1pBNmFM','Oy0OD1iDi6s','QWd8szOzXgs', 'NBzmEx10xcc')
#function I want to apply to each ID - succesfully applied here to one object
list_caption_tracks(video_id = 'J3Fv1pBNmFM')
#trying to map through the ID list - throwing an error.
map(videoid_list, list_caption_tracks)
这会引发错误“.f(.x[[i]], ...) 中的错误:必须指定视频 ID。”我正在努力弄清楚如何在成功循环元素的同时指定 video_id 变量。
这是我尝试过的:
map(videoid_list, list_caption_tracks, video_id = videoid_list)
这会抛出“vapply(elements, encode, character(1)) 中的错误:值的长度必须为 1,但 FUN(X[[2]]) 结果的长度为 5”
所以我想在指定 video_id 时我需要找到一种方法来 select 每个元素,但我无法弄清楚这部分。
我们可以使用 lambda 函数 (~
) 并在 list_caption_tracks
library(purrr)
out <- map(videoid_list, ~ list_caption_tracks(video_id = .x))