我正在为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的小标题...有人有建议吗?
答案 0 :(得分:0)
我认为,只要从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 = ",")