R语言read.csv设置check.names=F时列名if.变为if的原因是什么?
现象原因说明
- R语言对数据框的列名有默认合法性要求:列名需要是语法有效的变量名,不能是
if/else/for这类系统保留字,也不能以数字开头、包含空格等特殊字符。 read.csv函数的check.names参数默认值为TRUE,此时R会自动调用make.names()函数对读入的列名做修正处理:碰到if这类不符合要求的保留字时,会自动在末尾追加.将其转为合法名称,因此默认读入时列名显示为if.。- 当你设置
check.names = FALSE时,R会直接跳过列名校验和修正的步骤,完整保留CSV文件中原始的if作为列名,不会做任何修改。
补充提示:这类非合法的列名后续无法直接通过
df$if的方式调用,需要用反引号包裹列名,比如df$if``或者df[["if"]]才能正常读取对应列的数据。
内容的提问来源于stack exchange,提问作者user17234955
相关产品推荐
相关产品推荐

