用单元格中的公式读取excel文件到R中

我试图读取R数据框中的Excel电子表格。 但是,某些列具有公式或链接到其他外部电子表格。 每当我将电子表格读入R时,总会有许多单元格变成NA。 有没有一个好的方法来解决这个问题,以便我可以获得这些单元格的原始价值?

我用来导入的R脚本如下所示:

options(java.parameters = "-Xmx8g") library(XLConnect) # Step 1 import the "raw" tab path_cost = "..." wb = loadWorkbook(...) raw = readWorksheet(wb, sheet = '...', header = TRUE, useCachedValues = FALSE) 

更新:readxlreadxl看起来像一个更好的解决scheme。 这是非常快的(我在评论中提到的1400 x 6文件中0.14秒),它在导入之前评估公式。 它不使用java,所以不需要设置任何java选项。

  # sheet can be a string (name of sheet) or integer (position of sheet) raw = read_excel(file, sheet=sheet) 

有关更多信息和示例,请参阅简短的小插图 。

原文答案:尝试从xlsx包中read.xlsx xlsx 。 帮助文件意味着默认情况下,它会在导入之前评估公式(请参阅keepFormulas参数)。 我在一个小的testing文件上检查了这个,它为我工作。 公式结果已正确导入,其中包括依赖于同一工作簿中其他工作表的公式和依赖于同一目录中其他工作簿的公式。

一个警告:如果自上次更新文件上的链接后,外部链接的表格发生了变化,那么读入R的任何值都将取决于外部链接,而不是最新的值。

你的情况下的代码是:

 library(xlsx) options(java.parameters = "-Xmx8g") # xlsx also uses java # Replace file and sheetName with appropriate values for your file # keepFormulas=FALSE and header=TRUE are the defaults. I added them only for illustration. raw = read.xlsx(file, sheetName=sheetName, header=TRUE, keepFormulas=FALSE)