Как определить, какая старая версия пакета R совместима с моей версией R

Я пытаюсь установить пакет "tm", но потом я получаю сообщение об ошибке "tm" недоступно для моей версии R

package ‘tm is not available (for R version 3.0.2)

Но потом я увидел, что кто-то предложил загрузить архивированную версию из

http://cran.r-project.org/src/contrib/Archive/tm/?C=M;O=A

а затем попробуйте установить из источника.

Мой вопрос в том, как определить, какой файл в списке совместим с моей версией R?

Ответ 1

Вы можете использовать зеркало METACRAN:

Перейдите на страницу вины файла DESCRIPTION интересующего вас пакета.

Например, для tm: https://github.com/cran/tm/blame/master/DESCRIPTION

enter image description here

Найдите строку " Depends и нажмите столько раз, сколько необходимо, на визу " Вид" до этого значка изменения, пока не появится достаточно старая версия R.

Если вы хотите автоматизировать это, лучше использовать crandb (также от METACRAN).

Сторона примечания: иногда авторы пакетов списков R (≥ xyz) как зависимость просто должны быть в безопасности, потому что они используют версию xyz и не проводили никаких тестов с предыдущими версиями.

Ответ 2

Я разработал ответ, связанный с подходом здесь, но который использует только базу R (вам не нужны XML или devtools или что-то еще). Он также потенциально справляется с некоторыми непредвиденными обстоятельствами, которые не могут быть устранены решением, с которым я связан с другим вопросом. Поскольку это было около 100 строк кода, а не просто отправлять огромную функцию здесь, я перекатил его в пакет oldr вы можете получить от GitHub здесь:

oldr пакет GitHub repo

Пакет имеет только одну экспортированную функцию, install.compatible.packages(). Я тестировал его на Ubuntu 18.04. Я установил R 3.1.0 и установил tm (и его зависимости). Текущая версия tm требует R 3.2.0, поэтому не будет доступна через install.packages(), но моя функция позволяет ее установить:

> oldr::install.compatible.packages("NLP")
Installing package into ‘/home/duckmayr/R/x86_64-unknown-linux-gnu-library/3.1
(as ‘lib is unspecified)
* installing *source* package ‘NLP ...
** package ‘NLP successfully unpacked and MD5 sums checked
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (NLP)
> oldr::install.compatible.packages("slam")
Installing package into ‘/home/duckmayr/R/x86_64-unknown-linux-gnu-library/3.1
(as ‘lib is unspecified)
* installing *source* package ‘slam ...
** package ‘slam successfully unpacked and MD5 sums checked
** libs
gcc -I/opt/R/3.1.0/lib/R/include -DNDEBUG  -I/usr/local/include    -fpic  -g -O2  -c apply.c -o apply.o
gcc -I/opt/R/3.1.0/lib/R/include -DNDEBUG  -I/usr/local/include    -fpic  -g -O2  -c grouped.c -o grouped.o
gcc -I/opt/R/3.1.0/lib/R/include -DNDEBUG  -I/usr/local/include    -fpic  -g -O2  -c sparse.c -o sparse.o
gcc -I/opt/R/3.1.0/lib/R/include -DNDEBUG  -I/usr/local/include    -fpic  -g -O2  -c util.c -o util.o
gcc -shared -L/usr/local/lib -o slam.so apply.o grouped.o sparse.o util.o -L/opt/R/3.1.0/lib/R/lib -lRblas -lgfortran -lm -lquadmath -L/opt/R/3.1.0/lib/R/lib -lR
installing to /home/duckmayr/R/x86_64-unknown-linux-gnu-library/3.1/slam/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (slam)
> oldr::install.compatible.packages("tm")
Installing package into ‘/home/duckmayr/R/x86_64-unknown-linux-gnu-library/3.1
(as ‘lib is unspecified)
* installing *source* package ‘tm ...
** package ‘tm successfully unpacked and MD5 sums checked
** libs
gcc -I/opt/R/3.1.0/lib/R/include -DNDEBUG  -I/usr/local/include    -fpic  -g -O2  -c copy.c -o copy.o
gcc -shared -L/usr/local/lib -o tm.so copy.o -L/opt/R/3.1.0/lib/R/lib -lR
installing to /home/duckmayr/R/x86_64-unknown-linux-gnu-library/3.1/tm/libs
** R
** data
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (tm)

Обновление: тестирование в Windows

У меня теперь также была возможность протестировать Windows (8.1), и все работало гладко для установки tm в старую версию R (v. 3.1.0):

> oldr::install.compatible.packages("NLP")
Installing package into ‘C:/Users/User/Documents/R/win-library/3.1
(as ‘lib is unspecified)
trying URL 'http://mirror.las.iastate.edu/CRAN/bin/windows/contrib/3.1/NLP_0.1-9.zip'
Content type 'application/zip' length 278699 bytes (272 Kb)
opened URL
downloaded 272 Kb

package ‘NLP successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\User\AppData\Local\Temp\RtmpojDNlF\downloaded_packages
> oldr::install.compatible.packages("slam")
Installing package into ‘C:/Users/User/Documents/R/win-library/3.1
(as ‘lib is unspecified)
trying URL 'http://mirror.las.iastate.edu/CRAN/bin/windows/contrib/3.1/slam_0.1-32.zip'
Content type 'application/zip' length 111528 bytes (108 Kb)
opened URL
downloaded 108 Kb

package ‘slam successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\User\AppData\Local\Temp\RtmpojDNlF\downloaded_packages
> oldr::install.compatible.packages("tm")
Installing package into ‘C:/Users/User/Documents/R/win-library/3.1
(as ‘lib is unspecified)
trying URL 'http://mirror.las.iastate.edu/CRAN/bin/windows/contrib/3.1/tm_0.6-2.zip'
Content type 'application/zip' length 710798 bytes (694 Kb)
opened URL
downloaded 694 Kb

package ‘tm successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\User\AppData\Local\Temp\RtmpojDNlF\downloaded_packages

Обновление: дополнительные параметры

Теперь пользователи могут указать, какую версию R попытаться установить для параметра (параметр R_version) и какой каталог установить пакеты (параметр lib), которые могут быть полезны для тестирования или в других целях.

Ответ 3

Вы можете загрузить архивный пакет, а затем распаковать и удалить его. Файл DESCRIPTION перечисляет версию R, которая ему нужна. В вашем случае файл tm_0.5-10.tar.gz (то есть самая последняя версия архива, но не текущая версия) имеет tm_0.5-10.tar.gz строку:

Depends: R (>= 3.0.0)

Версия 0.6 пакета tm обновила свою зависимость от значения R, которое больше или равно 3.1.0.

Ответ 4

Другой вариант - обновить версию R, чтобы она совместима с последней версией пакета "tm". Вы можете сделать это легко внутри R, используя следующий код:

# install the latest installr package: 
install.packages("installr")

# require the latest installr package: 
require(installr)

#run the command to update R
updateR()

HT: http://www.r-statistics.com/2014/07/r-3-1-1-is-released-and-how-to-quickly-update-it-on-windows-os/