1

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

4

1 に答える 1