在R编程学习中遇到的一些问题记录

本篇内容:

安装R包-参数

当使用install.packages()安装R包时,repos参数指定了R应该从哪些仓库位置去查找和下载包。

默认情况下,repos会指向一些默认的CRAN镜像站点。但是有些包不在CRAN上,比如cmdstanr,它存放在一个自定义的仓库"https://mc-stan.org/r-packages/"。

为了能安装这样的非CRAN包,需要将自定义仓库地址添加到repos参数中,比如:

1
2
install.packages("cmdstanr",
repos = c("https://mc-stan.org/r-packages/", getOption("repos")))

这个repos设置了两个仓库:

  1. "https://mc-stan.org/r-packages/":cmdstanr包的仓库
  2. getOption(“repos”):默认的CRAN镜像站点

这样R就会先在cmdstanr的仓库地址查找该包,如果不存在再去CRAN镜像里查找依赖包。

所以通过这个方式,我们既可以下载需要的非CRAN包,也可以利用CRAN获取其他依赖包。

从github仓库中直接构建R包

有的时候我们需要fork修改r包的一些逻辑。

如果是在如kaggle的jupter r内核中安装,无法直接使用bash指令。

因为 Jupyter R kernel 实际上是在 R 会话中运行的,它只能执行 R 代码,无法直接调用系统命令和程序。

但是,可以通过 R 的 system() 函数来执行系统级命令。

1
2
3
4
5
6
7
8
9
#在Jupyter R kernel中克隆
repo_url <- "{REPO_URL}"
system(paste("git clone", repo_url))

# 使用devtools安装本地R包
install.packages("devtools")
my_cloned_library_build = devtools::build("~/put/the/package/path/here")
devtools::install_local(my_cloned_library_build)
library(my_cloned_library)

或者使用pak/remote安装,更方便

1
2
install.packages("pak")
pak::pkg_install("用户/仓库@分支")

在Linux中配置R环境

1
2
3
sudo apt-get update
sudo apt-get install r-base
R

还可以在在Linux的Jupyter Notebook中安装R内核

这里我死活安装不上devtools包,但是用pak十分可以

调取脚本时传参

1
2
3
4
5
6
7
#调取的脚本中

args <- commandArgs(trailingOnly=TRUE)

#命令行调用

R --slave --args 参数 < 脚本.R

SF包

R的文档真是不够友好……记录一下大佬们总结的教程

https://blog.51cto.com/u_16213391/7651424

https://zhuanlan.zhihu.com/p/127924322

https://www.jianshu.com/p/5c5af9401415