R 语法无效名称的后果

R 语法无效名称的后果,r,naming-conventions,read.table,R,Naming Conventions,Read.table,read.table系列(read.table,read.csv,read.delim等)具有参数check.names,解释如下: 合乎逻辑。如果TRUE则检查数据框中变量的名称,以确保它们在语法上是有效的变量名称。如有必要,可对其进行调整(通过make.names)使其保持一致,并确保没有重复项 假设我加载了一个包含语法无效列名的数据帧。除了必须使用`字符按名称访问特定列之外,还有其他后果吗?请查看帮助(make.names),了解它在做什么以及为什么 语法上有效的名称由字母、数字和点或符号

read.table
系列(
read.table
read.csv
read.delim
等)具有参数
check.names
,解释如下:

合乎逻辑。如果
TRUE
则检查数据框中变量的名称,以确保它们在语法上是有效的变量名称。如有必要,可对其进行调整(通过
make.names
)使其保持一致,并确保没有重复项

假设我加载了一个包含语法无效列名的数据帧。除了必须使用
`
字符按名称访问特定列之外,还有其他后果吗?

请查看
帮助(make.names)
,了解它在做什么以及为什么

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

字母的定义取决于当前区域设置,但仅限于 ASCII数字被视为数字

如有必要,在字符“X”前面加上前缀。所有无效字符 翻译成“.”。缺少的值将转换为“NA”。名字 哪些匹配的R关键字附加了一个点。重复值 由make.unique更改

让您感到困惑的是空白列名(
df$`
给出错误)和重复列名(
df$val
仅返回第一个
val
列结果)


除此之外,如果将此data.frame传递给一个函数,该函数需要一个具有有效名称的data.frame,则可能会出现错误,并且可能会出现难以检测到的无声错误

check.names
不仅检查名称是否有效,如果名称无效,它还会重新格式化名称。例如,如果您有一个名为
财政年度
的列,如果
check.names=TRUE
,则该列将重命名为
财政年度
。空格可能会带来不便,但实际上还有其他字符可能会导致问题,例如前导逗号。我知道check.names会修复无效的名称。您能否详细说明可能由其他字符引起的实际问题?大多数函数都需要有效的列名,并且可能会因无效名称而出错(尤其是那些使用非标准求值的函数)。如果您选择了无效的名称,您将自担风险。您应该彻底测试您希望使用的任何函数,看看它们是否使用无效名称(或者只使用有效名称,让您的生活更轻松)。