我正在尝试创建一个指定了列名的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
和.
?我怎样才能摆脱.
?
答案 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
一样使用它们,并且能够操作它们,而不是在打印时看起来很好。