我正在尝试创建一个指定列名的 data.frame 。当我输入以下内容时:
df_ht <- data.frame("Teams" = NA, "Shots" = NA, "Shots On Target" = NA)
Run Code Online (Sandbox Code Playgroud)
我得到以下标题:
Teams Shots Shots.On.Target
1 NA NA NA
Run Code Online (Sandbox Code Playgroud)
然后我在名称旁边放置空格以尝试分隔实际的列名称:
df_ht <- data.frame(" Teams " = NA, " Shots " = NA, " Shots On Target " = NA)
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
X.Teams. X.Shots. X.Shots.On.Target.
1 NA NA NA
Run Code Online (Sandbox Code Playgroud)
为什么会出现theX和 the呢?.我怎样才能摆脱.?
当您创建一个时data.frame,默认情况下它有该选项check.names = TRUE。这意味着 R 将检查提供的名称在语法上是否有效,并且它们是使用make.names.
From ?make.names,一个语法上有效的名称:
[..] 由字母、数字和点或下划线字符组成,以字母或点开头,后跟数字。“.2way”等名称无效,保留字也无效。
此外,无效字符会被替换为点。
如果你这样做
df_ht <- data.frame(" Teams " = NA, " Shots " = NA,
" Shots On Target " = NA, check.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
你会得到你想要的,但根本不建议这样做。调用或使用 data.frame 中的变量时会遇到很多麻烦(例如需要在列/变量名称周围使用反引号或丢失自动完成功能)。列名称的目的是像 in 一样使用它们df_ht$Teams并能够操作它们,而不是为了打印时看起来很好。