【发布时间】: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 您能否将您的答案发布为答案,以便我将其标记为正确?