我從 Spotify 網站下載了我的個人 Spotify 資料。我將這些資料從 JSON 轉換為常規的 R 資料框以供進一步分析。此個人資料框有 4 列:
Endtime artistName trackName Msplayed
但是,Spotify 有許多變數與藝術家的歌曲相關聯,您只能使用包中的函式檢索這些get_artist_audio_features變數spotifyr。我想將這些變數加入我的個人資料框。該軟體包一次只允許對一位藝術家進行資料檢索,并且在我的資料框中為所有 3000 多名藝術家撰寫一行代碼將非常耗時。
我用 afor loop來嘗試為藝術家收集元資料:
empty_list <- vector(mode = "list")
for(i in df$artistName){
empty_list[[i]] <- get_artist_audio_features(i)
}
我的資料框也有播客,這些元資料都不可用。當我嘗試在播客上使用該功能時,我收到錯誤訊息:
Error in get_artist_audio_features(i) :
No artist found with artist_id=''.
In addition: Warning messages:
1: Unknown or uninitialised column: `id`.
2: Unknown or uninitialised column: `name`.
當我使用 for 回圈時,它會在資料幀中的第一個錯誤(播客)發生時立即停止。當我給它提供一個只有藝術家而不是播客的向量時,它作業得很好。
我檢查了堆疊是否有可能的答案(最值得注意的是:在 for-loop 中跳過錯誤),但我無法讓循??環作業。
我的問題:我如何spotifyr::get_artist_audio_features在a 中使用函式for loop并跳過錯誤,將結果存盤在串列中。不幸的是,發布可重現的示例非常困難,因為您需要在 spotify 上激活開發人員帳戶才能使用該spotifyr軟體包。
uj5u.com熱心網友回復:
看起來您的問題出在 中artist_id = '',因此請嘗試以下代碼,看看它是否有助于您入門(因為我沒有可重現的資料,不確定是否會有所幫助)。在這種情況下,它應該只是跳過播客,但我相信更多的代碼鍛造將允許您將相關資料放在給定的串列位置。
for(i in df$artistName){
if(artist_id = ''){
empty_list[[i]] <- NA
} else {
empty_list[[i]] <- get_artist_audio_features(i)
}
}
您也可以while在增量上使用回圈條件i來重新啟動回圈,但如果沒有資料,我將無法做到這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437665.html
上一篇:在DjangoViewsFor回圈中生成多個PDF報告
下一篇:有沒有辦法替換字串中的不同值?
