【问题标题】:Names of columns change from CSV to R: dot instead of slash列的名称从 CSV 更改为 R:点而不是斜线
【发布时间】:2017-05-16 10:44:18
【问题描述】:

当我在 R 中导入 CSV 文件时,列的名称会发生​​变化。它们从“Fe/Cu”变为“Fe.Cu”。但是我只有一个 CSV 文件才有这个神秘的问题。 我试图重命名列

colnames(a[12:ncol(a)])=c("Fe/Cu","Fe/Zn","Fe/Ba")

但是什么也没发生。有什么想法吗?

【问题讨论】:

  • 尝试在read.csv函数调用中添加check.names=FALSE
  • 请注意,最好让列在语法上有效。来自文档:语法上有效的名称由字母、数字和点或下划线字符组成,并以字母或点开头,后跟数字。 “.2way”等名称无效,保留字也无效。否则,您必须使用反引号引用您的列,这可能会令人沮丧。就像 a$'Fe/Cu' (这里实际上是反引号,比如反引号)而不是 a$Fe.Cu

标签: r csv


【解决方案1】:

check.names=FALSE 添加到csv.read 函数调用将允许您获取原始名称。这是因为默认情况下csv.read 将检查列名在语法上是否如@Asayat 在评论中所述的有效。

来自csv.read 文档:

check.names - 逻辑:如果为 TRUE,那么在 检查数据框以确保它们在语法上有效 变量名。如有必要,它们会被调整(通过 make.names),以便 它们是,并且还要确保没有重复。

如果您随后查看make.names 的文档,您会发现:

语法上有效的名称由字母、数字和点或 下划线字符并以字母或不跟随的点开头 由一个数字。诸如“.2way”之类的名称无效, 保留字。

这是@Asayat 评论的。

【讨论】:

    【解决方案2】:

    列索引应该在colnames 之后,如下所示:

    colnames(a)[12:ncol(a)]=c("Fe/Cu","Fe/Zn","Fe/Ba")
    

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 2021-03-31
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多