Создать bib_text цитаты в R? - PullRequest
1 голос
/ 13 марта 2019

Использование функции справки в R иногда включает ссылку на то, что выглядит как форматирование APA. Например, функция closeness в igraph имеет.

?closeness
Freeman, L.C. (1979). Centrality in Social Networks I: Conceptual Clarification. Social Networks, 1, 215-239.

Я пишу в RMarkdown и хотел бы создать формат стиля Bibtext для этой цитаты, используя R (т.е. не извлекать его из другого источника). Это возможно?

Например, такая функция, как:

cit <- some_function('Freeman, L.C. (1979). Centrality in Social Networks I: 
 Conceptual Clarification. Social Networks, 1, 215-239.')

cit 

@article{freeman1978conceptual,
  title={conceptual clarification.” Social Networks},
  author={Freeman, Linton C},
  journal={“Centrality in social networks},
  volume={1},
  number={3},
  pages={215--239},
  year={1978}
}

1 Ответ

1 голос
/ 13 марта 2019

Вокруг есть функция, getHTMLhelp(), которая очищает документацию.

С ее помощью вы можете поместить необходимую информацию в вектор.

vec <- getHTMLhelp(closeness, package="igraph")[102:103]

Потому чтоон содержит HTML-теги, которые вы можете захотеть очистить от них и получить одну строку.

string <- gsub("<[^>]*>","", paste(vec, collapse=""))

Затем вы можете разделить это следующим образом:

rw <- t(strsplit(string, "\\. ")[[1]])
yr <- gsub("\\D", "", rw[2])
ref <- paste0(strsplit(tolower(rw[1]), ",")[[1]][1], yr,
              strsplit(tolower(rw[3]), " ")[[1]][1])
jrnl <- strsplit(rw[4], ", ")[[1]]

Теперь cat это.

cat(paste0("@article{", ref,"," ,
           "\n\ttitle={", rw[3], "},",
           "\n\tauthor={", rw[1], "},",
           "\n\tjournal={", jrnl[1], "},",
           "\n\tvolume={", jrnl[2], "},",
           "\n\tpages={", gsub("\\.", "", jrnl[3]), "},",
           "\n\tyear={", yr, "}",
           "\n}"
))

Результат

@article{freeman1979centrality,
    title={Centrality in Social Networks I:Conceptual Clarification},
    author={Freeman, L.C},
    journal={Social Networks},
    volume={1},
    pages={215-239},
    year={1979}
}

Конечно, теперь это конкретно относится к вашему примеру и нуждается в дальнейшем обобщении.

...