就这样,问题仍然得到了回答。在阅读using as 时将选项设置check.names
为:FALSE
data.frame
read.table
read.table(file, check.names = FALSE)
注意:正如@Roland 在评论下所说,最好保持列名干净而不是使用此参数。您还可能会遇到某些函数会自动将名称转换回来的情况。例如,
df <- data.frame('x+y' = 1:4, 'a+b' = 5:8, check.names = FALSE)
> df
# x+y a+b
# 1 1 5
# 2 2 6
# 3 3 7
# 4 4 8
# Now adding a 3rd column, using `transform`
transform(df, c=9:12)
# x.y a.b c # note that it reverts back
# 1 1 5 9
# 2 2 6 10
# 3 3 7 11
# 4 4 8 12
transform(df, c=9:12, check.names = FALSE)
# x+y a+b
# 1 1 5
# 2 2 6
# 3 3 7
# 4 4 8
您必须了解所有具有check.names=FALSE
并记住正确使用它们的功能。这至少是我能想到的一个问题。最好让列没有冲突。
在列名中包含运算符+
也会干扰公式模型接口:
dat <- data.frame('a+x'=c(1,2,3,4),b=c(2,4,6,8),check.names=FALSE)
lm(dat$b~dat$a+x)
Error in eval(expr, envir, enclos) : object 'x' not found
您将需要使用lm(dat$b~dat[,'a+x'])
.