Написание .bib файла из R с рефератами - PullRequest
0 голосов
/ 24 мая 2018

У меня есть файл .bib (загруженный из Web of Science), и я хочу импортировать его в R, заменить все экземпляры «in light of» на «CONSIDERING» и экспортировать его как файл .bib.Мне не удалось найти функцию, которая может записать мои данные обратно в файл .bib.WriteBib не работает, потому что refs является объектом "pairlist", а не "bibentry".Любой совет, как экспортировать файл .bib, который можно импортировать в Mendeley?спасибо за помощь!

вот код:

library(bibtex)
library(RefManageR)

refs = do_read_bib("/Users/CarrieAnn/Downloads/savedrecs (1).bib", encoding = "unknown", srcfile)

for (i in 1:length(refs)) {
  refs[[i]] = gsub("in light of", "CONSIDERING", refs[[i]])
}

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Попробуйте изменить свой код следующим образом (убедитесь, что вы используете функцию read.bib, и в цикле обращайтесь к полям, в которых отображается текст, который вы хотите изменить, например, «примечание» или «заголовок». Для предоставленного файла примера@andrew_reece, он должен работать следующим образом:

refs = read.bib("example.bib", encoding = "unknown", srcfile)

for (i in 1:length(refs)) {
   refs$note[i] = gsub("in light of", "CONSIDERING", refs$note[i])
}

WriteBib(as.BibEntry(refs), "example2.bib")

Однако, основываясь на описании вашей задачи, я согласен с @andrew_reece в том, что обрабатывать файлы bib как простой текст проще (с другой стороны, для больших bibфайлы, вы можете захотеть больше контролировать, какие поля вы заменяете.)

0 голосов
/ 24 мая 2018

Я думаю, что ваш самый простой вариант - рассматривать файл .bib как обычный текстовый файл.Попробуйте это:

raw_text  <- readLines("example.bib")
new_text  <- gsub("in light of", "CONSIDERING", raw_text)
writeLines(new_text, con="new_example.bib")

Содержимое example.bib:

%  a sample bibliography file
%  

@article{small,
author = {Doe, John},
title = {A small paper},
journal = {The journal of small papers},
year = 1997,
volume = {-1},
note = {in light of recent events},
}

@article{big,
author = {Smith, Jane},
title = {A big paper},
journal = {The journal of big papers},
year = 7991,
volume = {MCMXCVII},
note = {in light of what happened},
}

Вывод new_example.bib:

%  a sample bibliography file
%  

@article{small,
author = {Doe, John},
title = {A small paper},
journal = {The journal of small papers},
year = 1997,
volume = {-1},
note = {CONSIDERING recent events},
}

@article{big,
author = {Smith, Jane},
title = {A big paper},
journal = {The journal of big papers},
year = 7991,
volume = {MCMXCVII},
note = {CONSIDERING what happened},
}

Немного объяснений:
Объекты BibEntry имеют нестандартные внутренние компоненты и с ними трудно работать, помимо функций, предоставляемых в пакете RefManageR.Как только вы unclass или уменьшаете объект BibEntry до списка, становится трудно вернуть его в формат bib из-за требуемого сочетания полей и атрибутов объекта.(И что еще хуже, bibtex и RefManageR не имеют абсолютно одинаковую внутреннюю структуру, поэтому трудно конвертировать из одного контекста в другой.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...