使用map2_对f(x,y)进行迭代的问题

时间:2018-07-09 20:00:37

标签: r tidyverse purrr

我正在为LastFM API使用包装器来搜索曲目标签。  包装函数是...

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 个答案:

答案 0 :(得分:0)

我认为,只要从INFOLM函数中删除api_key参数,您的track_getInfo函数就可以工作。

此外,不确定是否需要在此处使用purrr::map2,应该可以将small_descriptive数据框与rowwisemutate一起使用以添加列你想要的。

使用testdf就像使用small_descriptivetrack列一样是您的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 = ",")