我正在尝试将数据文件读入R,但每次执行R都会更改标题。我在read
函数的文档中看不到任何控制方法。
我有同样的数据保存为csv和tsv,但两者都有同样的问题。
当我在excel或控制台中打开它时,数据文件中的标题如下所示:
cod name_mun age_class 1985 1985M 1985F 1986 1986M 1986F
但是当我使用read.csv('my_data.csv')
或read.delim('my_data.tsv')
R将其读入R时,将标题更改为:
> colnames(my_data)
[1] "ï..cod" "name_mun" "age_class" "X1985" "X1985M" "X1985F" "X1986"
[8] "X1986M" "X1986F"
为什么R会这样做以及如何防止它发生?
答案 0 :(得分:2)
你在这里看到两件不同的事情。
第一列的“ï..”来自文件开头的字节顺序标记。根据您创建文件的方式,您可以将其保存为ASCII或甚至只需UTF-8而不需要BOM来摆脱它。
R不喜欢以数字开头的变量名。如果您查看帮助页面?make.names
,您会看到
语法上有效的名称由字母,数字和点或组成 下划线字符并以字母或点开头未跟随 一个数字。诸如“.2way”之类的名称无效,也不是 保留字。
当您通过使用read.csv的check.names
参数读取数据时可以解决这个问题。
my_data = read.csv(file.choose(), check.names = FALSE)
这会将列名保留为数字。它还会将BOM更改为完整的BOM“”。