可以分别提取从 CRAN 和 Github 安装的 R 包吗?

Possible to extract R packages installed from CRAN and Github, separately?

我从 CRANGitHub 安装了很多 R 包,我想知道如何只提取从 CRAN 安装的那些包,或者只提取那些来自 GitHub?

据我所知,

installed.packages() 没有列出我可以使用的任何变量...

我会尝试类似的方法:

local <- as.character(installed.packages()[,1])
mirror <- as.character(available.packages()[,1])
local[!(local %in% mirror)]

更多细化:

local <- installed.packages()[,c(1,3)]
mirror <- available.packages()[,c(1,2)]
dif.install <- local[!(local[,1] %in% mirror[,1]),]
same.install <- local[(local[,1] %in% mirror[,1]),]
dif.version <- same.install[!(same.install[,2] %in% mirror[,2]),]
out <- merge(dif.version, mirror[(mirror[,1] %in% dif.version[,1]),], by = "Package")
colnames(out) <- c("Package", "Other", "CRAN")
out

为我的安装提供:

     Package     Other  CRAN
1 data.table     1.9.5 1.9.4
2 manipulate 0.98.1103 1.0.1
3      Zelig     5.0-5 4.2-1
packages <- installed.packages()[,1]

packages.keep <- sapply(packages, function(x) {
                                     url <- packageDescription(x)$URL
                                     if (length(grep("github", x = url)) == 0) {
                                        return(FALSE)
                                     }
                                     else {
                                        return(TRUE)
                                     }
                                  })

packages[packages.keep]

> packages[packages.keep]
           curl      data.table             DBI        devtools           dplyr 
         "curl"    "data.table"           "DBI"      "devtools"         "dplyr" 
       evaluate        forecast         ggplot2           git2r       gridExtra 
     "evaluate"      "forecast"       "ggplot2"         "git2r"     "gridExtra" 
          Hmisc            httr           mailR         memoise            mime 
        "Hmisc"          "httr"         "mailR"       "memoise"          "mime" 
           plyr            R.oo         R.utils              R6            Rcpp 
         "plyr"          "R.oo"       "R.utils"            "R6"          "Rcpp" 
  RcppArmadillo        reshape2        roxygen2         RSQLite       rversions 
"RcppArmadillo"      "reshape2"      "roxygen2"       "RSQLite"     "rversions" 
         scales         whisker 
       "scales"       "whisker"

为验证此结果,这里是 ggplot2 包的 URL 信息:

URL: http://ggplot2.org, https://github.com/hadley/ggplot2

很明显,这个包有一部分来自GitHub,它应该出现在列表中。如果您想使用 而不是 来自 GitHub 的包,您可以轻松修改我的代码。