R語言 -- xlsx 包安裝 | 讀取/創(chuàng)建 Excel 的 xlsx/xls文件

一、xlsx 包介紹

雖然平時處理的文件一般都是txtcsv文件,但其可讀性不如xlsx文件,在給別人展示你的分析結(jié)果時,一般就會用到xlsx文件。

試了很多包,比如...(我也忘了叫什么名字了),但論功能,xlsx的功能最多,最好用,但安裝有點麻煩。我覺得大家還是值得一試的

二、安裝

1. 在Rstudio上安裝:

xlsx 是可用于基于 java 寫的,調(diào)用 java 的函數(shù),所以需要系統(tǒng)先安裝 java 。然后在R里安裝rJavaxlsx兩個包就行了。

  • 安裝 java

下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html, 需注冊。

我是Window 64位,下載介個:


我的安裝路徑:D:\02_Software\Java\jdk1.8.0_333,后面要用。

  • 添加 java 環(huán)境變量

打開設(shè)置,搜索環(huán)境變量

打開環(huán)境變量


點擊下方系統(tǒng)變量的 新建

image.png

變量名設(shè)為:JAVA_HOME,咱都一樣的。

變量值就是剛才說的 java 安裝路徑,咱可能不一樣,我的是D:\Java\jdk1.8.0_261。

確定 > > 確定

重啟R(需不需要我也不知道??),輸入:

Sys.getenv("JAVA_HOME")

結(jié)果如下,則完成 java 環(huán)境配置。

Sys.getenv("JAVA_HOME")
[1] "D:\02_Software\Java\jdk1.8.0_333\jre"

  • 安裝 rJava

在 Rstudio 里安裝rJava包:

install.packages("rJava")
library("rJava")

如果蹦出來個下面的框說什么需要編譯,選否,反正我選是不能安裝成功??


  • 安裝 xlsx

在 Rstudio 里安裝xlsx包:

install.packages("xlsx")
library("xlsx")

warning 咱不用管哈。

到這里安裝步驟就完成了。

2 在服務(wù)器上安裝

  • 下載jdk至服務(wù)器
  • 解壓:


  • 添加java環(huán)境變量:
    ~/.bashrc里加入:
    注意把中文換成路徑
export JAVA_HOME=解壓的包所在路徑/jdk1.8.0_261
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$JAVA_HOME/bin:$PATH
  • 先安裝R包rJava
    install.packages("rJava")
    如果安裝成功則繼續(xù)安裝xlsx
    install.packages("xlsx")
  • 如果報錯,反正我捯飭了很久,沒法給出普適的解決方案

20220726更新
下面第二種方法可以解決問題,如果不行就都試試吧

我只給出可能的解決方案:

  1. 如果在java lib /user/bin/...這一行報錯:
    運行:
R CMD javareconf  JAVAC=/sibcb2/bioinformatics2/wangjiahao/software/java/jdk1.8.0_261/bin/javac JAR=/sibcb2/bioinformatics2/wangjiahao/software/java/jdk1.8.0_261/bin/jar JAVAH=/sibcb2/bioinformatics2/wangjiahao/software/java/jdk1.8.0_261/bin/javah

注意要把我的軟件路徑改成你的。
繼續(xù)安裝rJava

  1. 如果又報錯,我找到的解決方法是往LD_LIBRARY_PATH里面加個server
    export LD_LIBRARY_PATH=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib/amd64/server:$LD_LIBRARY_PATH
    具體加哪個sever我也不知道,多試試

  2. 運行R CMD javareconf -e
    之后,rJava我就安裝成功了,xlsx也就安裝成功了

這幾種方法都試試, 重新開個shell或者R重復(fù)幾遍, 或許就能正常安裝xlsx了 ......

三、xlsx包的用法

用法很簡單,最常用的兩個函數(shù):read.xlsx()、write.xlsx(),詳情查看:https://cran.r-project.org/web/packages/xlsx/xlsx.pdf

  • read.xlsx()
read.xlsx(
file,
sheetIndex,
sheetName = NULL,
rowIndex = NULL,
startRow = NULL,
endRow = NULL,
colIndex = NULL,
as.data.frame = TRUE,
header = TRUE,
colClasses = NA,
keepFormulas = FALSE,
encoding = "unknown",
password = NULL,
...
)z

file:文件路徑,必需
sheetIndex: [number] 要讀取表中哪個 sheet,必需
rowIndex: [number vector] 要讀取的行的范圍
colIndex: [number vector] 要讀列的列的范圍
header: 是否讀取表頭,默認(rèn)TRUE,數(shù)據(jù)有列名則設(shè) TRUE
還有一個 col.names 選項,默認(rèn)FLASE,數(shù)據(jù)有行名則設(shè) TRUE,不知道這個選項官方文檔為什么沒有

  • write.xlsx()
write.xlsx(
x,
file,
sheetName = "Sheet1",
col.names = TRUE,
row.names = TRUE,
append = FALSE,
showNA = TRUE,
password = NULL
)

x: 要保存一個數(shù)據(jù)框,如果不是會強制轉(zhuǎn)換為數(shù)據(jù)框,不過我發(fā)現(xiàn)強制轉(zhuǎn)換會有點問題,所以最好手動轉(zhuǎn)換
file: 要保存的文件名,同樣這兩個是必須的參數(shù)
sheetName: 指定保存的sheet名字
col.names: 是否保存列名,默認(rèn)是
row.name: 是否保存行名,默認(rèn)是
append: 是否追加寫入,就是可以將一個sheet追加到一個已經(jīng)存在的xlsx文件里,默認(rèn)否

  • 示例
x=matrix(c(1:12),3,4)
y=matrix(c(10:22),3,4)
dimnames(x) = list(c(1,2,3), c(1,2,3,4))
dimnames(y) = list(c(1,2,3), c(1,2,3,4))
> x
  1 2 3  4
1 1 4 7 10
2 2 5 8 11
3 3 6 9 12
# 寫入
write.xlsx(x, "test1.xlsx", sheetName = "test1", col.names = F, row.names = F)
write.xlsx(y, "test1.xlsx", sheetName = "test2", append = T, col.names = F, row.names = F)
# 讀取
data_x = read.xlsx("test1.xlsx", 1, header = F)
data_y = read.xlsx("test1.xlsx", 2, header = F)
sub_data_x = read.xlsx("test1.xlsx", 1, header = F, colIndex = c(1:2), rowIndex = c(2:3))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容