アーティストとアルバムのリストを調べて、各アルバムの各曲のオーディオ機能をデータ フレームに取得しようとしています (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()
.