gpt4 book ai didi

r - 使用 R 中的 xlsx 包更新 Excel 电子表格数据

转载 作者:行者123 更新时间:2023-12-02 07:28:27 26 4
gpt4 key购买 nike

我有一个与 R 中的 xlsx 包相关的查询。我知道如何使用包中的大部分函数,​​并且到目前为止还没有遇到任何问题。我将首先显示我的代码,然后提出我的问题。

#Code-Section1: 
library(xlsx)
data1<-iris
data1<-data1[,c(5,1:4)]
wb <- createWorkbook()
sheet1 <- createSheet(wb, sheetName="Sheet1")
addDataFrame(data1, sheet1, startRow=1, startColumn=1,row.names=FALSE)
saveWorkbook(wb, file="test.xlsx")
rm(data1);rm(sheet1);rm(wb)
#Code-Section1-end:

这部分只是将 iris 数据集放入名为 test.xlsx 的 Excel 电子表格中名为 Sheet1 的工作表中。现在,在 Excel 中,我决定通过添加总行来向电子表格添加更多内容,因此 Excel 电子表格的最后两行是:

virginica   5.9     3.0     5.1     1.8
876.5 458.6 563.7 179.9

我做的另一件事是在电子表格中再添加 4 列,其中包含每个数字占行总数的百分比。接下来,我想将 test.xlsx 加载到 R 工作簿中。我定义了一个名为 temp 的新数据框,其中包含一些随机正态值。我的目的是更新 test.xlsx 文件中的数字,以便行总数和百分比随后也会发生变化。更新后的电子表格的最后两行应该有所不同,具体取决于 rnorm(150,5,1) 值的输出。我将数据框保存到名为 testa.xlsx 的新电子表格中。这些值已更新,但由于某种原因,行总计和百分比保持不变,即使其单元格的值仍然是“=sum(b2:b151)”或“=b2/b$152”。

#Code-Section2: 
temp <- data.frame(Sepal.Length=rnorm(150,5,1), Sepal.Width=rnorm(150,5,1), Petal.Length=rnorm(150,5,1), Petal.Width=rnorm(150,5,1))
wb<-loadWorkbook("test.xlsx")
f<-getSheets(wb)[[1]]
addDataFrame(temp, sheet=f, startRow=2, startColumn=2,row.names=FALSE,col.names=FALSE)
saveWorkbook(wb, file="testa.xlsx")
#Code-Section2-end:

我的问题是,如何加载工作簿,更新数字,以便随后更新其中包含公式的单元格,然后保存到新的 Excel 文件中。我可能可以用另一种方式做到这一点,但这需要更多的步骤,我不介意这样做,但简单地更新数字以便其他单元格发生变化会非常方便。再次,就像我所做的每一篇文章一样,请原谅任何语法错误,如果您认为有必要,请随时更改此消息中的任何内容。

最佳答案

在保存工作簿 (wb) 之前,添加以下内容:

wb$setForceFormulaRecalculation(TRUE)

如果不行,还有VBA解决方案here .

关于r - 使用 R 中的 xlsx 包更新 Excel 电子表格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14935312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com