将具有多列的列表转换为数据框
Converting a list with multiple columns to a dataframe
我有一个列表,该列表的每个实体中都有多个列。我想提取两列并将每个实体转换为一行,因为我想将它与另一个与实体具有相同行数的数据框进行 cbind() 。
这是我的清单:
[[1]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/2cy1zPcrFcXAJTP0APWewL https://api.spotify.com/v1/artists/2cy1zPcrFcXAJTP0APWewL 2cy1zPcrFcXAJTP0APWewL
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Gente De Zona artist spotify:artist:2cy1zPcrFcXAJTP0APWewL
[[2]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/1noWnd8QFQD9VLxWEeo4Zf https://api.spotify.com/v1/artists/1noWnd8QFQD9VLxWEeo4Zf 1noWnd8QFQD9VLxWEeo4Zf
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Don Miguelo artist spotify:artist:1noWnd8QFQD9VLxWEeo4Zf
[[3]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/7iJrDbKM5fEkGdm5kpjFzS https://api.spotify.com/v1/artists/7iJrDbKM5fEkGdm5kpjFzS 7iJrDbKM5fEkGdm5kpjFzS
3 https://open.spotify.com/artist/37G8DfNgO4mQ3PKh5droSo https://api.spotify.com/v1/artists/37G8DfNgO4mQ3PKh5droSo 37G8DfNgO4mQ3PKh5droSo
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Sensato artist spotify:artist:7iJrDbKM5fEkGdm5kpjFzS
3 Osmani Garcia "La Voz" artist spotify:artist:37G8DfNgO4mQ3PKh5droSo
[[4]]
spotify href id
1 https://open.spotify.com/artist/2cy1zPcrFcXAJTP0APWewL https://api.spotify.com/v1/artists/2cy1zPcrFcXAJTP0APWewL 2cy1zPcrFcXAJTP0APWewL
2 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
name type uri
1 Gente De Zona artist spotify:artist:2cy1zPcrFcXAJTP0APWewL
2 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
[[5]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/5fjXwEPUkg5ucxmw4TpurV https://api.spotify.com/v1/artists/5fjXwEPUkg5ucxmw4TpurV 5fjXwEPUkg5ucxmw4TpurV
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Micha artist spotify:artist:5fjXwEPUkg5ucxmw4TpurV
[[6]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/7wU2WGCJ8HxkekHHE2QLul https://api.spotify.com/v1/artists/7wU2WGCJ8HxkekHHE2QLul 7wU2WGCJ8HxkekHHE2QLul
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Fuego artist spotify:artist:7wU2WGCJ8HxkekHHE2QLul
所以我基本上想调用列表中每个实体的第 3 列和第 4 列,并将输出放在数据框中。由于列表中每个实体的行数不同,我想将每个实体合并到一个新数据框中它自己的行中,该数据框有两列:id
和 name
。
目标是让最终输出看起来像这样:
id name
0TnOYISbd1XYRBk9myaseg, 2cy1zPcrFcXAJTP0APWewL Pitbull, Gente De Zona
0TnOYISbd1XYRBk9myaseg, 1noWnd8QFQD9VLxWEeo4Zf Pitbull, Don Miguelo
0TnOYISbd1XYRBk9myaseg, 7iJrDbKM5fEkGdm5kpjFzS, 37G8DfNgO4mQ3PKh5droSo Pitbull, Sensato, Osmani Garcia "La Voz"
2cy1zPcrFcXAJTP0APWewL, 0TnOYISbd1XYRBk9myaseg Gente De Zona, Pitbull
0TnOYISbd1XYRBk9myaseg, 5fjXwEPUkg5ucxmw4TpurV Pitbull, Micha
0TnOYISbd1XYRBk9myaseg, 7wU2WGCJ8HxkekHHE2QLul Pitbull, Fuego
我们可以用 lapply
遍历 list
do.call(rbind, lapply(lst, function(x) do.call(cbind, lapply(x[c('id', 'name')], toString))))
我有一个列表,该列表的每个实体中都有多个列。我想提取两列并将每个实体转换为一行,因为我想将它与另一个与实体具有相同行数的数据框进行 cbind() 。
这是我的清单:
[[1]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/2cy1zPcrFcXAJTP0APWewL https://api.spotify.com/v1/artists/2cy1zPcrFcXAJTP0APWewL 2cy1zPcrFcXAJTP0APWewL
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Gente De Zona artist spotify:artist:2cy1zPcrFcXAJTP0APWewL
[[2]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/1noWnd8QFQD9VLxWEeo4Zf https://api.spotify.com/v1/artists/1noWnd8QFQD9VLxWEeo4Zf 1noWnd8QFQD9VLxWEeo4Zf
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Don Miguelo artist spotify:artist:1noWnd8QFQD9VLxWEeo4Zf
[[3]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/7iJrDbKM5fEkGdm5kpjFzS https://api.spotify.com/v1/artists/7iJrDbKM5fEkGdm5kpjFzS 7iJrDbKM5fEkGdm5kpjFzS
3 https://open.spotify.com/artist/37G8DfNgO4mQ3PKh5droSo https://api.spotify.com/v1/artists/37G8DfNgO4mQ3PKh5droSo 37G8DfNgO4mQ3PKh5droSo
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Sensato artist spotify:artist:7iJrDbKM5fEkGdm5kpjFzS
3 Osmani Garcia "La Voz" artist spotify:artist:37G8DfNgO4mQ3PKh5droSo
[[4]]
spotify href id
1 https://open.spotify.com/artist/2cy1zPcrFcXAJTP0APWewL https://api.spotify.com/v1/artists/2cy1zPcrFcXAJTP0APWewL 2cy1zPcrFcXAJTP0APWewL
2 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
name type uri
1 Gente De Zona artist spotify:artist:2cy1zPcrFcXAJTP0APWewL
2 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
[[5]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/5fjXwEPUkg5ucxmw4TpurV https://api.spotify.com/v1/artists/5fjXwEPUkg5ucxmw4TpurV 5fjXwEPUkg5ucxmw4TpurV
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Micha artist spotify:artist:5fjXwEPUkg5ucxmw4TpurV
[[6]]
spotify href id
1 https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg 0TnOYISbd1XYRBk9myaseg
2 https://open.spotify.com/artist/7wU2WGCJ8HxkekHHE2QLul https://api.spotify.com/v1/artists/7wU2WGCJ8HxkekHHE2QLul 7wU2WGCJ8HxkekHHE2QLul
name type uri
1 Pitbull artist spotify:artist:0TnOYISbd1XYRBk9myaseg
2 Fuego artist spotify:artist:7wU2WGCJ8HxkekHHE2QLul
所以我基本上想调用列表中每个实体的第 3 列和第 4 列,并将输出放在数据框中。由于列表中每个实体的行数不同,我想将每个实体合并到一个新数据框中它自己的行中,该数据框有两列:id
和 name
。
目标是让最终输出看起来像这样:
id name
0TnOYISbd1XYRBk9myaseg, 2cy1zPcrFcXAJTP0APWewL Pitbull, Gente De Zona
0TnOYISbd1XYRBk9myaseg, 1noWnd8QFQD9VLxWEeo4Zf Pitbull, Don Miguelo
0TnOYISbd1XYRBk9myaseg, 7iJrDbKM5fEkGdm5kpjFzS, 37G8DfNgO4mQ3PKh5droSo Pitbull, Sensato, Osmani Garcia "La Voz"
2cy1zPcrFcXAJTP0APWewL, 0TnOYISbd1XYRBk9myaseg Gente De Zona, Pitbull
0TnOYISbd1XYRBk9myaseg, 5fjXwEPUkg5ucxmw4TpurV Pitbull, Micha
0TnOYISbd1XYRBk9myaseg, 7wU2WGCJ8HxkekHHE2QLul Pitbull, Fuego
我们可以用 lapply
list
do.call(rbind, lapply(lst, function(x) do.call(cbind, lapply(x[c('id', 'name')], toString))))