2017-08-17 68 views
0

我有一个列表,看起来有很多部分。我的目标是用NA来替换每个$部分中的值。我想保留标题。替换列表中的所有值(保留标题)与NA

名单如下:

$href 
[1] "https://api.spotify.com/v1/albums/4vucVTj5GjNV0MllVjsxo5/tracks?offset=0&limit=50" 

$items 

artists 
1 https://open.spotify.com/artist/2ueoLVCXQ948OfhVvAy3Nn, https://api.spotify.com/v1/artists/2ueoLVCXQ948OfhVvAy3Nn, 2ueoLVCXQ948OfhVvAy3Nn, Perfume Genius, artist, spotify:artist:2ueoLVCXQ948OfhVvAy3Nn 
2 https://open.spotify.com/artist/2ueoLVCXQ948OfhVvAy3Nn, https://api.spotify.com/v1/artists/2ueoLVCXQ948OfhVvAy3Nn, 2ueoLVCXQ948OfhVvAy3Nn, Perfume Genius, artist, spotify:artist:2ueoLVCXQ948OfhVvAy3Nn 

available_markets 
1 AD, AR, AT, AU, BE, BG, BO, BR, CA, CH, CL, CO, CR, CY, CZ, DE, DK, DO, EC, EE, ES, FI, FR, GB, GR, GT, HK, HN, HU, ID, IE, IS, IT, JP, LI, LT, LU, LV, MC, MT, MX, MY, NI, NL, NO, NZ, PA, PE, PH, PL, PT, PY, SE, SG, SK, SV, TR, TW, US, UY 
2 AD, AR, AT, AU, BE, BG, BO, BR, CA, CH, CL, CO, CR, CY, CZ, DE, DK, DO, EC, EE, ES, FI, FR, GB, GR, GT, HK, HN, HU, ID, IE, IS, IT, JP, LI, LT, LU, LV, MC, MT, MX, MY, NI, NL, NO, NZ, PA, PE, PH, PL, PT, PY, SE, SG, SK, SV, TR, TW, US, UY 
    disc_number duration_ms explicit            
spotify 
1   1  166946 FALSE https://open.spotify.com/track/2QX2OeVkckAavMTJtbV7GX 
2   1  224620 FALSE https://open.spotify.com/track/15yWH0t80xio9hCjOZpalj 
                href      
id 
1 https://api.spotify.com/v1/tracks/2QX2OeVkckAavMTJtbV7GX 2QX2OeVkckAavMTJtbV7GX 
2 https://api.spotify.com/v1/tracks/15yWH0t80xio9hCjOZpalj 15yWH0t80xio9hCjOZpalj 
               name 
1   Slip Away - Recorded at Spotify Studios NYC 
2 Body's In Trouble - Recorded at Spotify Studios NYC 

preview_url track_number type 
1 https://p.scdn.co/mp3-preview/fc1e8a296749237d7558ecc09bc5244251d033de?cid=c432b36c21724d2989baf7d4d8a6bfd3   1 track 
2 https://p.scdn.co/mp3-preview/ac154324daedaff11d9806367bc980293dfb491b?cid=c432b36c21724d2989baf7d4d8a6bfd3   2 track 
            uri 
1 spotify:track:2QX2OeVkckAavMTJtbV7GX 
2 spotify:track:15yWH0t80xio9hCjOZpalj 

$limit 
[1] 50 

$`next` 
named list() 

$offset 
[1] 0 

$previous 
named list() 

$total 
[1] 2 

如何转换此列表只针对NA像这样的每一行的值?

$href 
[1] NA 

$items 

artists 
1 NA 
2 NA 

available_markets 
1 NA 
2 NA 
    disc_number duration_ms explicit            
spotify 
1 NA 
2 NA 
                href      
id 
1 NA 
2 NA 
               name 
1             NA 
2             NA 

preview_url track_number type 
1 NA 
2 NA 
            uri 
1         NA 
2         NA 

$limit 
[1] NA 

$`next` 
NA 

$offset 
[1] NA 

$previous 
NA 

$total 
[1] NA 

任何帮助将是伟大的解决这个问题。我知道如何替换数据框的值,但不是列表。

谢谢!

+0

这将是更容易帮助,如果你提供的[重复的例子(https://stackoverflow.com/questions/5963269/how-to-make-a -great-R再现的-例子)。共享一个'dput()'而不仅仅是打印的对象。这真的需要吗?你究竟想要做什么? – MrFlick

+0

我想列表中的每个元素都是数据框?如果是这样,也许你可以使用'lapply(you_list,fun)',其中'fun'是一个函数如何替换数据帧的值? –

+1

我认为这会做'list_2 < - purrr :: map(list_1,〜替换(.x,!is.na(.x),NA))' – roarkz

回答

2

我想这会做到这一点: list_2 <- purrr::map(list_1, ~replace(.x, !is.na(.x), NA))