Проблемы с итерацией по f(x, y) с использованием map2_
Я использую оболочку для API LastFM для поиска тегов трека. функция-обёртка...
devtools::install_github("juyeongkim/lastfmr")
track_getInfo("track", "artist", api_key= lastkey)
Я определил свою собственную функцию как
INFOLM <- function(x= track, y= artist) {
output <- track_getInfo(x,y,api_key = lastkey)
output <- flatten(output)
output_1 <- output[["tag"]][["name"]]
return(output_1)
}
Затем подготовил мой список элементов из моего большего фрейма данных
artist4lf <- c(small_descriptive[1:10,2])
track4lf <- c(small_descriptive[1:10,3])
x<- vector("list", length = length(track4lf))
y<- vector("list", length = length(artist4lf))
names(x) <- track4lf
names(y) <- artist4lf
Затем...
map2_df(track4lf, artist4lf, INFOLM)
Я каждый раз получаю отгул 0x0... У кого-нибудь есть предложение?
1 ответ
Решение
Я думаю твой INFOLM
Функция будет работать, если вы просто удалите api_key
аргумент от track_getInfo
функция.
Кроме того, не уверен, что вам нужно использовать purrr::map2
здесь вы должны иметь возможность использовать small_descriptive
кадр данных с rowwise
а также mutate
добавить столбцы, которые вы хотите.
Вот иди, используя testdf
как будто это твой small_descriptive
кадр данных только с track
а также artist
колонны.
library(lastfmr)
library(dplyr)
library(tidyr)
testdf <- tribble(
~Artist, ~Track,
"SmashMouth", "All Star",
"Garth Brooks", "The Dance"
)
INFOLM <- function(x= track, y= artist) {
output <- track_getInfo(x,y)
output <- flatten(output)
output_1 <- output[["tag"]][["name"]]
return(paste(output_1, collapse = ","))
}
testdf %>% rowwise %>%
mutate(stuff = INFOLM(Track, Artist)) %>%
tidyr::separate(stuff, c("Tag1", "Tag2", "Tag3", "Tag4", "Tag5"), sep = ",")