Действительно трудно преобразовать список списков в аккуратный фрейм данных. Я нашел различные решения, но ни одно из них не сработало для того, что я специально пытаюсь сделать. Это также должно быть очень быстро, потому что набор данных массивный. Вот фрагмент списков:
$PMID
[1] "32007943" "32007942" "32007941" "31894091" "31894090"
$Authors
$Authors[[1]]
LastName ForeName Initials order
1 Ward Jordan M JM 1
2 Hess Jaclyn N JN 2
3 Davis Loretta S LS 3
$Authors[[2]]
LastName ForeName Initials order
1 Pope Janet E JE 1
$Authors[[3]]
LastName ForeName Initials order
1 Polachek Ari A 1
2 Eder Lihi L 2
$Authors[[4]]
LastName ForeName Initials order
1 Milchert Marcin M 1
2 Brzosko Marek M 2
$Authors[[5]]
LastName ForeName Initials order
1 Pascual Eliseo E 1
2 Andrés Mariano M 2
3 Sivera Francisca F 3
$Year
[1] 2020 2020 2020 2020 2020
$PublicationType
$PublicationType[[1]]
PublicationType
"Journal Article"
$PublicationType[[2]]
PublicationType
"Editorial"
$PublicationType[[3]]
PublicationType
"Editorial"
$PublicationType[[4]]
PublicationType
"Journal Article"
$PublicationType[[5]]
PublicationType
"Editorial"
Вот то, что я хочу, чтобы эти данные в конечном итоге выглядели. «Авторы» должны быть наблюдениями в кадре данных, но при этом необходимо сохранить структуру, в которой группа Авторы [1] сопоставляется с PMID [1], а Авторы [2] с PMID [2] и т. Д. И т. Д.
LastName ForeName Initials order PMID Year Publication_Type
1 Ward Jordan M JM 1 32007943 2020 "Journal Article"
2 Hess Jaclyn N JN 2 32007943 2020 "Journal Article"
3 Davis Loretta S LS 3 32007943 2020 "Journal Article"
4 Pope Janet E JE 1 32007942 2020 "Editorial"
5 Polachek Ari A 1 32007941 2020 "Editorial"
6 Eder Lihi L 2 32007941 2020 "Editorial"
7 Milchert Marcin M 1 31894091 2020 "Journal Article"
8 Brzosko Marek M 2 31894091 2020 "Journal Article"
9 Pascual Eliseo E 1 31894090 2020 "Editorial"
1 Andrés Mariano M 2 31894090 2020 "Editorial"
11 Sivera Francisca F 3 31894090 2020 "Editorial"
Буду очень признателен за любую помощь!
ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ: А. Сулиман опубликовал действительно хорошее решение, но как только я go через 100 извлечений, он вылетает. Очень запутанно. Я просто публикую весь сценарий и вывод:
#install.packages("RISmed")
library(RISmed)
srch_jrheum2020 <- '("The Journal of rheumatology"[Journal]) AND ("2019/01/01"[Date - Publication] : "2020/01/01"[Date - Publication])'
query_jrheum2020 <- EUtilsSummary(
srch_jrheum2020,
retmax=100,
mindate= 2000,
maxdate= 2021,
datetype = "ppdt")
package_jrheum2020 <- EUtilsGet(query_jrheum2020, type = "efetch", db = "pubmed")
list_jrheum2020 <- list('PMID' = PMID(package_jrheum2020),
'Authors' = Author(package_jrheum2020),
'Year' = YearPubmed(package_jrheum2020),
'Month' = MonthPubmed(package_jrheum2020),
'Day' = DayPubmed(package_jrheum2020),
'Journal' = Title(package_jrheum2020),
'PublicationType' = PublicationType(package_jrheum2020))
df_jrheum <- pmap_dfr(list_jrheum2020, ~data.frame(
.y,
pmid = .x,
year = ..3,
month = ..4,
day = ..5,
journal = ..6,
type = ..7,
stringsAsFactors = FALSE))
Так что это прекрасно работает и возвращает именно то, что я хочу:
LastName ForeName Initials order pmid year month day journal type
1 Milchert Marcin M 1 31894091 2020 1 3 The Journal of rheumatology Journal Article
2 Brzosko Marek M 2 31894091 2020 1 3 The Journal of rheumatology Journal Article
3 Pascual Eliseo E 1 31894090 2020 1 3 The Journal of rheumatology Editorial
4 Andrés Mariano M 2 31894090 2020 1 3 The Journal of rheumatology Editorial
5 Sivera Francisca F 3 31894090 2020 1 3 The Journal of rheumatology Editorial
6 Yazici Yusuf Y 1 31894089 2020 1 3 The Journal of rheumatology Editorial
7 Mankia Kulveer K 1 31787610 2019 12 4 The Journal of rheumatology Letter
8 Briggs Christopher C 2 31787610 2019 12 4 The Journal of rheumatology Letter
9 Emery Paul P 3 31787610 2019 12 4 The Journal of rheumatology Letter
10 Deane Kevin D KD 1 31787609 2019 12 4 The Journal of rheumatology Journal Article
11 Demoruelle M Kristen MK 2 31787609 2019 12 4 The Journal of rheumatology Journal Article
12 Alpizar-Rodriguez Deshiré D 1 31787603 2019 12 4 The Journal of rheumatology Letter
13 Finckh Axel A 2 31787603 2019 12 4 The Journal of rheumatology Letter
14 Dahal Lekh N LN 1 31787598 2019 12 4 The Journal of rheumatology Letter
15 Barker Robert N RN 2 31787598 2019 12 4 The Journal of rheumatology Letter
16 Ward Frank J FJ 3 31787598 2019 12 4 The Journal of rheumatology Letter
17 <NA> <NA> <NA> NA 31787596 2019 12 4 The Journal of rheumatology Journal Article
18 <NA> <NA> <NA> NA 31787595 2019 12 4 The Journal of rheumatology Journal Article
19 <NA> <NA> <NA> NA 31787595 2019 12 4 The Journal of rheumatology Published Erratum
20 Rabin Jeff C JC 1 31787594 2019 12 4 The Journal of rheumatology Journal Article
21 Ramirez Kirsti K 2 31787594 2019 12 4 The Journal of rheumatology Journal Article
22 Owen Claire E CE 1 31787593 2019 12 4 The Journal of rheumatology Editorial
23 Liew David F L DFL 2 31787593 2019 12 4 The Journal of rheumatology Editorial
24 Buchanan Russell R C RRC 3 31787593 2019 12 4 The Journal of rheumatology Editorial
25 Falasinnu Titilola T 1 31787592 2019 12 4 The Journal of rheumatology Editorial
26 Simard Julia F JF 2 31787592 2019 12 4 The Journal of rheumatology Editorial
27 Hwang Steven R SR 1 31676702 2019 11 5 The Journal of rheumatology Letter
28 Sawatsky Adam P AP 2 31676702 2019 11 5 The Journal of rheumatology Letter
29 Michelena Xabier X 1 31676699 2019 11 5 The Journal of rheumatology Letter
30 Marco-Pascual Carla C 2 31676699 2019 11 5 The Journal of rheumatology Letter
31 González-Giménez Xavier X 3 31676699 2019 11 5 The Journal of rheumatology Letter
32 Juanola Xavier X 4 31676699 2019 11 5 The Journal of rheumatology Letter
По какой-то безумной причине, если я ударю Часть «retmax» функции EUtilsSummary после 100 Я получаю эту ошибку:
> df_jrheum <- pmap_dfr(list_jrheum2020, ~data.frame(
+ .y,
+ pmid = .x,
+ year = ..3,
+ month = ..4,
+ day = ..5,
+ journal = ..6,
+ type = ..7,
+ stringsAsFactors = FALSE))
Error in data.frame(.y, pmid = .x, year = ..3, month = ..4, day = ..5, :
arguments imply differing number of rows: 4, 1, 3
In addition: There were 50 or more warnings (use warnings() to see the first 50)
>
> warnings()
Warning messages:
1: In data.frame(.y, pmid = .x, year = ..3, month = ..4, ... :
row names were found from a short variable and have been discarded
2: In data.frame(.y, pmid = .x, year = ..3, month = ..4, ... :
row names were found from a short variable and have been discarded
3: In data.frame(.y, pmid = .x, year = ..3, month = ..4, ... :
row names were found from a short variable and have been discarded
Есть также досадные предупреждения о отбрасывании строк, но это кажется менее значимым.