所以XLSX包居然爲了拉和修改工作簿與Java庫接口。 read.xlsx和write.xlsx函數是便捷包裝,用於在R內讀寫數據幀,而無需手動編寫代碼來使用java對象自己分析單個單元和行。 loadWorkbook和getRows函數使您可以訪問實際的Java對象,然後可以使用它們修改單元格樣式等內容。但是,如果您希望在輸出電子表格之前添加空白行,最簡單的方法是在導出數據框之前向數據框添加空行(如克里斯提到的那樣)。你可以在你的代碼下面變種做到這一點:
library("xlsx")
fn1 <- 'test1.xlsx'
fn2 <- 'test2.xlsx'
# I have added row.names=FALSE because the read.xlsx function
# does not have a parameter to include row names
write.xlsx(matrix(rnorm(25),5),fn1,row.names=FALSE)
# If you read your data back in using the read.xlsx function
# you will have a data frame rather than a series of java object references
wb <- read.xlsx(fn1,1)
# Now that we have a data frame we can add a blank row at the top
wb<-rbind.data.frame(rep("",5),wb)
# Then we write to the file using the same function as before
write.xlsx(wb,fn2,row.names=FALSE)
如果您希望在Java庫採用先進的功能,它的一些目前尚未在R包中實現,這樣的話你將不得不直接使用.jcall調用它。如果您決定採取這一行動,我絕對推薦在生成的對象上使用.jmethods(即.jmethods(rows [[1]]),它將列出您可以在對象上使用的可用函數(在單元級別這些都是相當廣泛的)
我得到錯誤 錯誤在wb [c(1,2),]:'S4'類型的對象不是子集合PS我試圖添加到行的循環每行的數量,以便它出現兩行,但它只是刪除所有行。 –
聲音像wb不是作爲數據框加載,而是作爲列表或向量。嘗試str(wb),你可能有在添加行之前強制wb – Chris