我正在尝试浏览艺术家和专辑列表,并将每张专辑的每首歌曲的音频特征放入数据框(使用 spotifyr 包)。但是,在我的列表中,专辑标题有一些拼写错误,所以我尝试使用 agrep 或 agrepl 进行模糊匹配
例如:
library(spotifyr)
library(purrr)
library(dplyr)
library(readr)
Artist <- c("Eminem", "Spiritualized")
Album <- c("Revival", "Pure Phase")
mydata <- data_frame(Artist, Album)
get_artist_audio_features()
来自 spotifyr的功能会返回艺术家每首歌曲的音频功能,但我只想要某些特定专辑中的歌曲。
get_album_data <- function(x) {
get_artist_audio_features(mydata$Artist[x]) %>%
filter(agrepl(album_name, mydata$Album[x]) == TRUE)}
try_get_album_data <- function(x) {
tryCatch(get_album_data(x), error = function(e) {data.frame()})}
map_df(seq(1,2), try_get_album_data)
当我运行它时,我收到错误:
...argument 'pattern' has length > 1 and only the first element will be used
有任何想法吗?我知道我需要以某种方式循环 agrepl,但我不确定如何在filter()
函数中实现它,或者我什至需要filter()
.