简体   繁体   中英

How to load packages in R

I have successfully installed the tm package, which is located in: C:\\Users\\JustinLiang\\Documents\\R\\win-library\\3.0

After type library() , it shows me the R packages available list:

Packages in library 'C:/Users/JustinLiang/Documents/R/win-library/3.0':

tm Text Mining Package

Packages in library 'C:/Program Files/R/R-3.0.2/library':

however, when I try to load the package: library(tm) , it shows me an error:

Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
  there is no package called ‘slam’
Error: package or namespace load failed for ‘tm’

The package has to be first installed before you load the package using library() . To install any package, open the R or RStudio shell and execute the following

install.packages("tm",dependencies=TRUE)

This will ask you to select the mirror and it will install it for you. If you use RStudio , you can easily do it from the Tools menu as shown below ( Tools -> Install Packages -> Name of the package you want to install). 在此输入图像描述

And then finally, you can invoke the library("name of the package installed") function.

When you use install.packages() , my sense would be to recommend you call with the parameter dependencies = TRUE . This will install both the required library and its dependencies. Personally, I would avoid all the complexities and use the following solution:

requiredPackages <- c("ascii", "devtools","plyr","dplyr","tidyr")

ipak <- function(pkg)
{
  new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
  if (length(new.pkg))
    install.packages(new.pkg, dependencies = TRUE)
  sapply(pkg, require, character.only = TRUE)
}

ipak(requiredPackages)

this code both checks if the package is installed and if not installed will install the library and its dependencies. It then loads the package via require(). nb. Personally, I prefer require() to library() as you can check the return code of a call to require() ...

My sense is that the above code may make for easier code readability as it removes the need to have library() calls through the code.

I hope the above helps - happy new year

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM