R 语言技巧

博客围绕R语言展开,介绍了检测包库是否安装并安装到指定目录、使用指定目录下包库、用命令安装包库到指定目录的方法,还提及设置R所使用的GCC环境。重点讲解了安装xlsx包库读取xlsx文件,包括操作示例及解决相关异常的办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. R 检测包库是否安装, 如果没安装则安装到指定目录
if(!("igraph" %in% rownames(installed.packages()))) 
{
    install.packages("igraph", lib="./Rpackages/")
}
2. R 使用指定目录下的包库
library("igraph", "./")
3. R 用命令安装包库到指定目录
if [ -n $R_LIBS ]; then
   export R_LIBS=~/Rpackages/
else
   export R_LIBS=~/Rpackages/:$R_LIBS
fi
echo $R_LIBS
gcc --version
R CMD INSTALL -l $R_LIBS ../../igraph_1.2.4.1.tar.gz
4. 设置 R 所使用的 GCC 环境

在当前用户主目录下配置 .Renviron 文件
示例:

curpath=/home/mylogonuser/

PATH=$curpath/GCC-5.4.0/bin:/usr/bin:/bin
LD_LIBRARY_PATH=$curpath/GCC-5.4.0/lib
LD_LIBRARY_PATH=$curpath/GCC-5.4.0/lib64:$LD_LIBRARY_PATH:/usr/lib64:/usr/lib:/lib64:/lib
LD_RUN_PATH=$curpath/GCC-5.4.0/lib
LD_RUN_PATH=$curpath/GCC-5.4.0/lib64:/usr/lib64:/usr/lib:/lib64:/lib
LD_LIBRARY_PATH=$curpath/curlibs/usr/lib64:$curpath/curlibs/usr/lib:$curpath/curlibs/lib64:$LD_LIBRARY_PATH
LD_RUN_PATH=$curpath/GCC-5.4.0/lib64:$curpath/curlibs/usr/lib64:$curpath/curlibs/usr/lib:$curpath/curlibs/lib64:/usr/lib64:/usr/lib:/lib64:/lib
PATH=$curpath/GCC-5.4.0/bin:$curpath/curlibs/usr/bin:$curpath/curlibs/sbin:/usr/bin:/bin

[1]. https://stackoverflow.com/questions/1616983/building-r-packages-using-alternate-gcc

5. R 安装 xlsx 包库读取 xlsx 文件

配对:
使用 R CMD INSTALL 源代码压缩包 手动从源码安装
Red Hat Enterprise Linux Server release 6.3 (Santiago) x86_64
gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)
R version 3.2.0 (2015-04-16) – “Full of Ingredients”
java version “1.7.0_79” (Oracle)
rJava_0.9-7.tar.gz
xlsxjars_0.6.0.tar.gz
xlsx_0.5.7.tar.gz

rstudio 中使用 install.packages() 自动安装
Fedora release 29 (Twenty Nine) x86_64 workstation
gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
R version 3.5.3 (2019-03-11) – “Great Truth”
java version “1.8.0_212” (Oracle)
rJava 0.9-11
xlsxjars 0.6.1
xlsx 0.6.1

5.1 操作示例
xlsx::read.xlsx2(filename,
                             sheetName = "sheetname", 
                             colClasses = c("character", "numeric")

结果是一个 data.frame

5.2 Error in .jcall(“RJavaTools” … java.lang.reflect.InvocationTargetException
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
Calls: getNetwork ... <Anonymous> -> .jrcall -> .jcall -> .jcheck -> .Call
Execution halted

增大堆空间进行解决 Try this to increase the heap size:

options(java.parameters = "-Xmx8000m") 
library(rJava)
library(xlsxjars)
library(xlsx)

这句代码放在 rJava, xlsxjars, xlsx 包的载入之前.
[1]. https://cran.r-project.org/src/contrib/Archive/rJava/
[2]. https://cran.r-project.org/src/contrib/Archive/xlsxjars/
[3]. https://cran.r-project.org/src/contrib/Archive/xlsx/
[4]. http://www.sthda.com/english/wiki/reading-data-from-excel-files-xls-xlsx-into-r
[5]. http://www.milanor.net/blog/read-excel-files-from-r/
[6]. http://r.789695.n4.nabble.com/Problem-with-xlsx-package-td3298470.html
[7]. https://stackoverflow.com/questions/21937640/handling-java-lang-outofmemoryerror-when-writing-to-excel-from-r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值