Загрузка пакета R внутри скрипта R

Я попробовал несколько способов загрузки нескольких определенных пакетов внутри моего script.R, чтобы запустить скрипт в терминале, набрав ./Rscript script.R. Со сценарием проблем нет, но я получаю сообщение об ошибке, когда хочу загрузить пакет, например, tidyverse.

Error: package or namespace load failed for ‘tidyverse’ in rbind(info, getNamespaceInfo(env, "S3methods")):
number of columns of matrices must match (see arg 2)
In addition: Warning message:
package ‘tidyverse’ was built under R version 3.6.0

По этой ссылке Установка пакета в R внутри скрипта Я попытался найти расположение библиотеки, набрав .libPaths() в Rstudio, затем я указал путь для загрузки пакета внутри script.R, набрав library(tidyverse,lib.loc="/Library/Frameworks/R.framework/Versions/3.6/Resources/library")

Опять получаю ту же ошибку. Не могли бы вы указать, где происходит ошибка? Спасибо


person Apex    schedule 05.05.2020    source источник
comment
Это может помочь - researchgate.net/post/ - среди других вариантов они предлагают сделать ваш собственный код пакета, чтобы он сам вызывал зависимости.   -  person Pablo Herreros Cantis    schedule 05.05.2020
comment
Кроме того, возникает ли такая же проблема с любым другим пакетом или только tidyverse?   -  person Pablo Herreros Cantis    schedule 05.05.2020
comment
Вы также можете увидеть, имеет ли require() тот же результат. Вы можете найти скрипт, который использует запрос и проверяет его успешность, здесь — yihui. org/en/2014/07/library-vs-require: if (require('foo')) { awesome_foo_function() } else { warning('You missed an awesome function') }   -  person Pablo Herreros Cantis    schedule 05.05.2020
comment
@PabloHerrerosCantis Я пробовал с readr и все равно получаю ту же ошибку   -  person Apex    schedule 05.05.2020


Ответы (2)


Обратите внимание, что не рекомендуется использовать require() для загрузки пакетов. Если использование library() не удается, нет причин, по которым require() будет работать.

Судя по вашему вопросу, вы используете определенный двоичный файл Rscript в своей текущей папке (./Rscript), возможно, это не та же версия R, что и RStudio.

Вы можете попробовать запустить

Rscript -e "library(tidyverse)"

чтобы узнать, сможете ли вы загрузить tidyverse. Обратите внимание, что здесь я использую команду Rscript вместо ./Rscript. Это должно указывать на вашу последнюю установленную версию R и ту же версию, которую использует RStudio.

Если ошибка не устранена, вы можете просто попробовать переустановить tidyverse, используя

Rscript -e "install.packages('tidyverse')"
person milanmlft    schedule 05.05.2020

Решение загружает пакет require()

require(dplyr)
person Apex    schedule 05.05.2020