创建data.frame时,X和点添加到列名称

时间:2014-01-14 17:43:50

标签: r dataframe

我正在尝试创建一个指定了列名的data.frame。当我输入以下内容时:

df_ht <- data.frame("Teams" = NA, "Shots" = NA, "Shots On Target" = NA)

我得到以下标题:

              Teams Shots Shots.On.Target
1                NA    NA              NA

然后我在名称旁边放置空格以尝试区分实际的列名:

df_ht <- data.frame(" Teams " = NA, " Shots " = NA, " Shots On Target " = NA) 

我得到了这个:

          X.Teams. X.Shots. X.Shots.On.Target.
1           NA            NA                 NA

为什么会出现X.?我怎样才能摆脱.

1 个答案:

答案 0 :(得分:2)

创建data.frame时,默认情况下会选择check.names = TRUE。这意味着R将检查提供的名称是否具有语法上有效的名称,并使用make.names创建它们。

来自?make.names,一个语法上有效的名称:

  

[..]由字母,数字和点或下划线字符组成   并以字母或点开头,后面没有数字。名称   例如“.2way”无效,保留字也不存在。

此外,无效字符将被点替换。

如果你这样做

df_ht <- data.frame(" Teams " = NA, " Shots " = NA,
                    " Shots On Target " = NA, check.names=FALSE)

你会得到你想要的东西,但不建议这样做。调用或使用data.frame中的变量会很复杂(比如需要在列/变量名称周围使用后退标记或丢失自动完成功能)。列名的目的是像df_ht$Teams一样使用它们,并且能够操作它们,而不是在打印时看起来很好。