2

如何确定 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 上是否安装了任何子架构,如果是,它们是什么?

4

2 回答 2

3

R.version, R.Version(), R.version.string, 并version提供有关 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 并在不同的地方安装了不同的架构,这将不起作用。有关详细信息,请参阅R 安装和管理手册的2.6子架构。

于 2013-07-07T17:15:42.983 回答
0

使用Sys.info()你有很多关于你的系统的信息。也许在这里可以提供帮助

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

编辑

使所有架构成为可能的一种解决方法是从 Rstudio 镜像下载日志文件,它并不完整,但它可以很好地估计您需要什么。

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"
于 2013-07-07T17:07:12.470 回答