Installing packages onto R

user2407346 picture user2407346 · May 22, 2013 · Viewed 55k times · Source

For some reason I am suddenly not able to install packages in R (I have subsequently updated to the latest version of R and am running Windows 7). For example, if I type:

install.packages('beeswarm')

Installing package into ‘D:/Rlibs’ (as ‘lib’ is unspecified) --- Please select a CRAN mirror for use in this session --- trying URL 'http://www.stats.bris.ac.uk/R/bin/windows/contrib/3.0/beeswarm_0.1.5.zip' Content type 'text/html' length unknown opened URL downloaded 1859 bytes

Error in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) : cannot open the connection In addition: Warning messages: 1: In unzip(zipname, exdir = dest) : error 1 in extracting from zip file 2: In read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) : cannot open compressed file 'beeswarm/DESCRIPTION', probable reason 'No such file or directory'

I have read that in Windows 7 there can be important restrictions on rights to writing to certain folders etc. so I've gone to some lengths to install R and library folders in non-default areas of my computer, and to allow myself rights to certain folders, but to no avail. Possibly also of importance is when I type:

.libPaths()

# [1] "D:/Rlibs"                                             
# [2] "C:/Users/L.Halsey/Documents/R/win-library/3.0"        
# [3] "C:/Users/L.Halsey/Documents/Documents/R-3.0.1/library"

I have created several folders in an attempt to create one that I could successfully install libraries into and set them up to be recognised by R using 'environment variables' from the start button. I don't know how to delete any of them though - not sure if this is relevant to my overall problem of not now being able to install/update packages for some reason.

Answer

IRTFM picture IRTFM · May 22, 2013

The error being reported is inability to open a connection. In Windows that is often a firewall problem and is in the Windows R FAQ. The usual first attempt should be to run internet2.dll. From a console session you can use:

setInternet2(TRUE)

(You are correct in thinking this is not due to your library setup. The error says nothing about permissions.) I don't think just typing .libPaths should return that character vector since on my machine I would need to type .libPaths() to see something like that. If you wanted to reduce the number of places for libraries you can use the .libPaths function for setting the values. This would pick the second and third of the existing paths

 .libPaths( .libPaths()[2:3] )

The inner call retrieves the path vector and the outer call sets it to a reduced vector.