Создать символьную переменную, включающую список номеров для функции поиска - PullRequest
0 голосов
/ 05 апреля 2020

Может кто-нибудь помочь мне с проблемой синтаксиса символов? У меня есть столбец данных со списком чисел (в виде символов):

df$issn
   [1] "2369-2960" "1532-2777" "1876-2026" "1872-7727" "1872-7123"
   [6] "1532-2777" "1542-7714" "1879-1190" "1090-2139" "1090-2139"

Мне нужно преобразовать их в специальный синтаксис c, чтобы они работали в функции из пакета RISmed. Я не думаю, что вам нужно беспокоиться о деталях пакета. Если я могу просто найти поиск в нужном формате, все должно работать.

Вот вывод, где я вручную вставляю числа в правильном формате:

>  EUtilsSummary('2369-2960 OR 1532-2777 OR 1876-2026 OR 1872-7727',
+     retmax=100, mindate= 2018, maxdate= 2021, datetype = "edat")
[1] "\"JMIR Public Health Surveill\"[Journal] OR \"Med Hypotheses\"[Journal] OR \"Asian J Psychiatr\"[Journal] OR \"Eur J Radiol\"[Journal] AND 2018[EDAT] : 2021[EDAT]"
> 

Таким образом, вы можете видеть, что мне нужен поиск «число ИЛИ число ИЛИ число». Я написал функцию вставки, чтобы это произошло, и похоже, что она работает нормально:

> issns <- paste0("\'", paste0(unique(df$issn), collapse = " OR "), "\'")
> issns
[1] "'2369-2960 OR 1532-2777 OR 1876-2026 OR 1872-7727 OR 1872-7123 OR 1542-7714 OR 1879-1190 OR 1090-2139 OR 1873-6513... 

Это как 800 из этих чисел, поэтому я обрезал их там. В любом случае, когда я запускаю свою функцию с переменной issns, я получаю сообщение об ошибке:


> EUtilsSummary(issns,
+     retmax=100,  mindate= 2018, maxdate= 2021, datetype = "edat") 
Error in file(con, "r") : 
  cannot open the connection to 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term='2369-2960+OR+1532-2777+OR+1876-2026+OR+1872-7727+OR+1872-7123+OR+1542-7714+OR+1879-1190+OR+1090-2139+OR+1873-6513+OR+1523-6838+OR+1532-2742+OR+1474-4457+OR+1555

Почему это происходит? Теоретически:

  1. Вставка моей переменной issns должна быть такой же, как просто вывод их, верно?
  2. Есть ли какая-то функция синтаксиса / кодирования, которую мне не хватает? Перепробовал кучу вещей без пользы.

1 Ответ

0 голосов
/ 05 апреля 2020

Спасибо тем, кто обратился! Думаю, я бы ответил на это, чтобы никто не тратил на это время.

Оказывается, где-то вверх по течению (RISmed? Pubmed?) Внутренне синхронизирует, сколько из этих ISSN я могу вставить в параметры поиска. Я пробежал кучу более ограниченных сетов, и как только я набрал более 500 номеров ISSN, он вас отключил.

Так что я просто разбил поиск на куски, затем запустил RBIND для объединения DF. Не элегантный, но функциональный. Спасибо!

...