【问题标题】:openxlsx package, read.xlsx check.names=false still placing a . in column namesopenxlsx 包,read.xlsx check.names=false 仍然放置一个 .在列名中
【发布时间】:2020-07-13 00:59:07
【问题描述】:

通常我使用 Tidyverse 通过 read_excel 命令读取 excel 文件,但是我遇到了可怕的“未知或未初始化的列”错误,该错误指的是不存在的列,然后从那时起通过工作流程警告说不存在的列.

所以我决定改用 openxlsx 来读取 excel 文件。一切都很顺利,直到我意识到 openxlsx 看到带有空格的列名在语法上不正确,它添加了一个 .替换空格。所以“客户名称”变成了“客户名称”。

我尝试使用 check.names=FALSE 命令保留标题,但包似乎忽略了此命令。

许多标题的单词之间可能有多个空格,并且格式必须保持不变。我无法使用依赖 Java 的 excel 包,因为我们公司已经阻止了它。

如何强制 openxlsx 不理会标题?

我使用的代码示例在这里:IMACS <- read.xlsx("//zfsstdscun001a.rz.ch.com/UKGI_Pricing/Bus_Insights/R_Scripts/IMACS.xlsx",check.names=FALSE, sheet = "IMACS")

【问题讨论】:

  • 试试sep.names = " ",默认是"."
  • 嗨,马特,感谢您的提示。它确实删除了 .并且所有在单词之间只使用一个空格的标题现在都是正确的。但是那些有不止一种空格格式的现在只有一个空格。这是一个糟糕的命名约定,我一直反对维护它,但他们有其他流程是为旧文件的确切结构设置的,所以我必须维护它。
  • 为什么不使用readxl::read_xlsx
  • 现在这似乎很有魅力,但我不确定它是如何工作的。它像 tidyverse read_xlsx 命令一样读取它,所以我不必再担心 sep.names 了。与 dplyr 中不存在的列有关的一个文件现在也可以正常工作。出于兴趣,该命令到底在做什么? ** 在这里找到答案:stackoverflow.com/questions/35240971/… ** 感谢马特的帮助!
  • @Matt 您能否将您的答案发布为答案,以便我将其标记为正确?

标签: r excel openxlsx


【解决方案1】:

这一切归功于@Matt。

同时使用 readxl 和 read_excel 效果很好。

IMACS <- readxl::read_excel("//zfsstdscun001a.rz.com/UKGI_Pricing/Bus_Insights/R_Scripts/CAT Risks/IMACSV2.xlsx",
                            sheet = "IMACS")

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    相关资源
    最近更新 更多