问题. Rstudio无法用https正常下载R包
有些服务器会有无法用https访问网站的问题,如:
URL 'https://cran.rstudio.com/src/contrib/PACKAGES.rds': status was 'SSL connect error'
常用的简单方法是在install.packages()
增加repos
参数来指定安装源(将https变成http),如:
install.packages("ggplot2", repos = "http://cran.rstudio.com")
如果想root权限来安装R包,则:
sudo su - -c "R -q -e \"install.packages('ggplot2', repos='http://cran.rstudio.com/')\""
但有时一些脚本里以被开发者切入了安装R包的代码,这时无法更改代码的前提下,希望能在启动R包时就指定好安装源,可以考虑修改Rprofile.site
文件,参考资料:
- https://csgillespie.github.io/efficientR/3-3-r-startup.html#r-startup
- https://stackoverflow.com/questions/45061272/r-and-ssl-curl-on-ubuntu-linux-failed-ssl-connect-in-r-but-works-in-curl
你可以通过编辑位置初始化文件(Rprofile.site)或者目录初始化文件(.Rprofile)来定制R环境;在启动的时候,R会从
R_HOME/etc
目录寻找Rprofile.site
来调用,其中R_HOME
是环境变量,也会从HOME
目录或者current project目录寻找.Rprofile
文件来调用
可用Sys.getenv("R_HOME")
来确定R_HOME
的位置,用Sys.getenv("HOME")
来确定HOME
的位置,以及用getwd()
来确定current project目录
如果是要在.Rprofile
设置R环境,则需要考虑其在不同位置的优先顺序,其优先级:current project
> HOME
> R_HOME
对于我这个问题,可以在上述文件中设定repos
参数来修改CRAN源
local({
r <- getOption("repos")
r["CRAN"] <- "http://cran.rstudio.com/"
options(repos=r)
})
或者简单点指定一个源
options(repos="http://cran.rstudio.com/")
问题. 如何在root用户下安装Tinytex
最近在服务器上安装Tinytex时发现,首先我的服务器不支持https访问,而Tinytex的安装程序则是从CTAN mirrors下载TeX Live的,针对这种情况可以考虑从CTAN mirrors选择一个镜像,然后用options
参数来指定,如:
export CTAN_REPO="http://mirror.las.iastate.edu/tex-archive/systems/texlive/tlnet"
然后按照谢大神写的教程 https://yihui.org/tinytex/#for-other-users来分步安装
wget -qO- "http://yihui.org/gh/tinytex/tools/install-unx.sh" | sh
以上参考:https://github.com/yihui/tinytex/issues/114
接着在安装过程中如果意外中断,或者安装完后报错.TinyTeX/bin/*/tlmgr: not found
,一般也是网络问题导致的安装不完全,重新安装即可;比如我们比较常见的pdflatex,如果发现这个not found,则用下述代码检查下确认下是否真的安装了(如果未安装,则会显示""-空),没有的话就重新按照上述步骤再装一遍
# 查看pdflatex的路径
Sys.which('pdflatex')
接着遇到如何用root账户来安装Tinytex呢,相比上述步骤需要再额外加些参数,参考:https://yihui.org/tinytex/faq/
wget -qO- "https://yihui.org/gh/tinytex/tools/install-unx.sh" | sh -s - --admin --no-path
sudo ~/.TinyTeX/bin/*/tlmgr path add
其会将TeX Live executables都link到/usr/local/bin
以便所有用户使用
如果在rmarkdown使用中发现还缺少某个Tex Live模块,如缺少framed.sty
,则通过Tinytex一些函数即可完成安装:
library(tinytex)
tlmgr_search('framed.sty') # 搜索包含 framed.sty 文件的 LaTeX 包
tlmgr_install('framed')
假如你是用root安装Tinytex,则在后续安装其他模块时会报错:tlmgr_install add_link_dir_dir: destination /usr/local/bin not writable
这时先确定下模块是否已安装,通过下述命令即可列出所有已安装的LeTex模块
tlmgr(c('info', '--list', '--only-installed', '--data', 'name'))
确定后是已安装后,再次用sudo ~/.TinyTeX/bin/*/tlmgr path add
即可
如果还遇到其他问题,可参考这篇https://github.com/yihui/tinytex/issues/103,谢大神给了一些debug的方式;还可以查查tinytex FAQ以及tinytex debug
问题. Figure position in markdown when converting to PDF
当在用knitr将rmarkdown导出为PDF的时候,会发现图片位置会默认出现在下一页,并不是按照我们在rmarkdown中所设置的顺序,这个是Latex coding,如要解决可以考虑以下的方式:
- 选择导出html,因为html没有此限制
- 在rmarkdown中增加一些参数设置以避免这种情况发生
参考资料:
* Figure position in markdown when converting to PDF with knitr and pandoc * How to hold figure position with figure caption in pdf output of knitr?
针对第二种方法,可分为两种情况:
如有对于图片输出时未设置fig.cap
参数,那么增加fig.pos='h'
即可
fig.pos 1
plot(cars)
或者在全局中设置
setup, include 1
knitr::opts_chunk$set(echo = FALSE, fig.pos='h')
如果在图片输出时必须包含fig.cap
参数用于添加图片名称,那么可以考虑用以下方法,即增加header-includes: \usepackage{float}
,fig.pos='h'
以及在图片输出时加上out.extra=''
,最后一个必须加上。。。
---
title: "Title"
output:
pdf_document:
header-includes: \usepackage{float}
---
setup, include 1
knitr::opts_chunk$set(echo = FALSE, fig.pos='h')
fig.cap 1
plot(cars)
问题. 如何在shiny中下载rmarkdown报告
参照官方模板再略微修改即可,https://shiny.rstudio.com/gallery/download-knitr-reports.html
还可以传变量(比如:data
)到rmarkdown中,实现交互生成报告
output$download_outlier_report <- downloadHandler(
filename = function() {
paste("test.pdf")
},
content = function(file) {
data <- InputData()
src <- normalizePath("outlierdoc.Rmd")
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, "template.Rmd", overwrite = TRUE)
out <- render("template.Rmd", pdf_document())
file.rename(out, file)
}
)
本文出自于http://www.bioinfo-scrounger.com转载请注明出处