【发布时间】:2021-12-02 10:55:16
【问题描述】:
我正在使用 R 中的 openxlsx 包制作一个 Excel 工作表,该工作表稍后将每天添加一行数据。
我在使用 ISERROR 和 STDEV.P 的公式时遇到问题,但不仅仅是 AVERAGE、MIN 或 MAX。 Excel 在我的公式中添加了一个隐式交集运算符 (@)。我删除了我的 ISERROR 代码,但我仍然遇到 STDEV.P 的问题
创建工作簿、wb 并将标题放入其中后,我的代码简化为:
formula1 <- "AVERAGE(E2:E32)"
formula2 <- "AVERAGE(IF(ISERROR(E2:E32),"",E2:E32))"
formula3 <- "STDEV.P(IF(ISERROR(E2:E32),"",E2:E32))"
formula4 <- "STDEV.P(E2:E34)"
writeFormula(wb, 1, x=formula1, startCol = 5, startRow = 34)
writeFormula(wb, 1, x=formula2, startCol = 5, startRow = 35)
writeFormula(wb, 1, x=formula3, startCol = 5, startRow = 36)
writeFormula(wb, 1, x=formula4, startCol = 5, startRow = 37)
writeFormula(wb, 1, x=formula5, startCol = 5, startRow = 38)
saveWorkbook(wb, file = "Log.xlsx", overwrite = TRUE)
这就是 Excel 对我的公式所做的:
formula1
What in R is the string: AVERAGE(E2:E32)
What Excel shows: =AVERAGE(E2:E32) ok; works
formula2
What in R is the string: AVERAGE(IF(ISERROR(E2:E32),"",E2:E32))
What Excel shows: =AVERAGE(IF(ISERROR(@E2:E32),"",E2:E32)) value error in Excel
formula3
What in R is the string: STDEV.P(IF(ISERROR(E2:E32),"",E2:E32))
What Excel shows: =@STDEV.P(IF(ISERROR(@E2:E32),"",E2:E32)) name error in Excel
formula4
What in R is the string: STDEV.P(E2:E34)
What Excel shows: =@STDEV.P(E2:E34) Name error in Excel
每个添加了 @ 的公式在 Excel 中都不起作用,无论我在 E2:E34 中是否有数据。使用 STDEV.P 的公式出现 ?NAME 错误,其他公式出现值错误。
有谁知道如何解决这个问题? 有什么我可以添加到我的 R 代码中来强制 Excel 停止添加这些 @ 的吗? 有什么方法可以更改我在 R 中的公式字符串,以便 Excel 不会出错?
感谢您提供的任何帮助。
【问题讨论】:
-
可能是 Office 365 特定问题,因为我无法在 Office 2019 中复制 @ 符号的外观。
-
非常感谢您的帮助,xilliam。因为我尝试了你的公式,所以我发现当涉及错误时,Excel 计算 stdev 有点不稳定。就好像我的列中有一个等于 0 的额外数据值,使我的 stdev 有点偏离。 (尽管有stdev.p,我实际上得到了示例std dev)由于新数据将仅通过RR输入到文件中(在R从我们的数据库中提取聊天日志之后)我不需要公式来调整它们Excel 本身中的值,所以我将运行 R 中的所有公式并将结果发送到 Excel 文件。
-
啊,很好,很高兴你找到了前进的道路。
标签: r excel intersection implicit openxlsx