Написание пакета R, который отличается для каждой архитектуры - PullRequest
5 голосов
/ 11 января 2011

Я пишу пакет R, в котором вы можете создавать сети и выводить их в разных типах файлов.Я нашел пакет SVGRTipsDevice, который можно использовать для создания SVG-изображений, содержащих подсказки и гиперссылки, которые мне действительно нравятся.Я включил это в свой пакет как один из вариантов вывода, сделав его не основной частью моего пакета, но тем не менее частью (той, которую я хочу сохранить).

Проблема сейчасявляется то, что этот пакет предназначен только для 32-битных пользователей.Поскольку мой пакет зависит от него, 64-битные пользователи не могут его установить.Похоже, мне нужно либо сделать свой пакет только 32-битным, либо удалить возможности SVG (в настоящее время я выбрал последний для загрузки в CRAN со ссылкой на полный пакет на моем сайте).

IsЕсть ли способ сделать это по-другому?Как сделать пакет устанавливаемым для всех, но только сделать функциональность SVG доступной для 32-битных пользователей?

Ответы [ 3 ]

6 голосов
/ 11 января 2011

Самый простой способ, который я могу придумать, это проверить Sys.info() для типа машины:

Итак, на моей машине:

 Sys.info()["machine"]
 machine 
"x86_64" 

РЕДАКТИРОВАТЬ Я считаю, что это говорит нам об архитектуре аппаратного обеспечения, а не о том, является ли R 32 или 64-битным. Так что, если у пользователя было 64-битное оборудование и он работал с 32-битным R, приведенный выше код все равно возвращал бы x86_64 Как указал мне Саша, лучшее решение - запустить:

R.Version()$arch
[1] "x86_64"

Итак, вы можете видеть, что у меня 64-битная ОС и 64-битная версия R.

4 голосов
/ 11 января 2011

Пакеты, перечисленные в поле «Предлагает:» или «Расширения» файла DESCRIPTION вашего пакета, не требуют установки в системе пользователя для установки пакета, чтобы 32-64-разрядные пользователи могли установить ваш пакет.Вместо того, чтобы проверять битность, вы можете ok <- suppressWarnings(require(SVGToolTips))), может быть .onLoad или аналогичный.

0 голосов
/ 11 января 2011

Вы можете сделать пакет packagename-32bit также с дополнительными функциями.

...