确定安装了哪些R架构

时间:2013-07-07 16:57:28

标签: r

如何确定R的安装支持哪些体系结构?在标准的Windows安装中,可能会查找是否存在R_HOME / bin / * / R.exe,其中*是体系结构(通常是i386或x64)。在CRAN的标准mac安装中,没有子目录。

我可以使用以下内容查询R的默认架构:

$ R --silent -e "sessionInfo()[[1]][[2]]"
> sessionInfo()[[1]][[2]]
[1] "x86_64"

但我怎么知道mac / linux上是否安装了任何子架构,如果安装了它们是什么?

2 个答案:

答案 0 :(得分:3)

R.versionR.Version()R.version.stringversion提供有关R正在运行的版本的详细信息。

根据对问题的更好理解进行更新。这不是一个完整的解决方案,但似乎通过以下命令的组合可以非常接近:

# get all the installed architectures
arch <- basename(list.dirs(R.home('bin'), recursive=FALSE))
# handle different operating systems
if(.Platform$OS.type == "unix") {
  arch <- gsub("exec","",arch)
  if(arch == "")
    arch <- R.version$arch
} else {  # Windows
  # any special handling
}

请注意,如果您从源代码构建了R并在不同的不同位置安装了不同的体系结构,则无法使用此功能。有关详细信息,请参阅2.6 Sub-architectures手册的R Installation and Administration

答案 1 :(得分:0)

使用Sys.info()您可以获得有关系统的大量信息。 可能在这里可以提供帮助

Sys.info()["machine"]
 machine 
"x86_64" 

修改

让所有架构成为可能的一种解决方法是从Rstudio镜像下载log files,它不完整,但它可以很好地估计你需要的内容。

start <- as.Date('2012-10-01')
today <- as.Date('2013-07-01')

all_days <- seq(start, today, by = 'day')
year <- as.POSIXlt(all_days)$year + 1900
urls <- paste0('http://cran-logs.rstudio.com/', year, '/', all_days, '.csv.gz')
files <- file.path("/tmp", basename(urls))

list_data <- lapply(files, read.csv, stringsAsFactors = FALSE)
data <- do.call(rbind, list_data)

str(data)
## 'data.frame':    10694506 obs. of  10 variables:
##  $ date     : chr  "2012-10-01" "2012-10-01" "2012-10-01" "2012-10-01" ...
##  $ time     : chr  "00:30:13" "00:30:15" "02:30:16" "02:30:16" ...
##  $ size     : int  35165 212967 167199 21164 11046 42294 435407 326143 119459 868695 ...
##  $ r_version: chr  "2.15.1" "2.15.1" "2.15.1" "2.15.1" ...
##  $ r_arch   : chr  "i686" "i686" "x86_64" "x86_64" ...
##  $ r_os     : chr  "linux-gnu" "linux-gnu" "linux-gnu" "linux-gnu" ...
##  $ package  : chr  "quadprog" "lavaan" "formatR" "stringr" ...
##  $ version  : chr  "1.5-4" "0.5-9" "0.6" "0.6.1" ...
##  $ country  : chr  "AU" "AU" "US" "US" ...
##  $ ip_id    : int  1 1 2 2 2 2 2 1 1 3 ...

unique(data[["r_arch"]])
##  [1] "i686"      "x86_64"    NA          "i386"      "i486"     
##  [6] "i586"      "armv7l"    "amd64"     "000000"    "powerpc64"
## [11] "armv6l"    "sparc"     "powerpc"   "arm"       "armv5tel"