Проблемы с итерацией по 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 = ",")
Другие вопросы по тегам