当header = TRUE时,read.csv加载为句点的特殊字符

时间:2014-02-19 22:10:59

标签: r csv

我有一个\t分隔的.csv文件,其中第一行包含列名,而其他行包含,个小数符号。我试图用read.csv()命令来读它:

x = read.csv("Export.csv", header = TRUE, sep = "\t", dec = ",")
输入(文件Export.csv)中的

我有例如

"$\{,}_"
45,2

给了我

<header>X....._</header>
45.2

我原本以为它会将引用的值解释为字符串,将数字解释为数字。

它正确地将45,2解释为数字,但是除了下划线之外,它会混淆所有特殊字符。

我认为这是一个编码问题所以我尝试了几个不同的编码选项,结果相同。

此外,如果我将header参数更改为TRUE,我会正确显示所有内容,但所有数据都会被解释为字符串,并且(正如预期的那样)第一行不是标题。

如何在这些情况下将特殊字符加载到标题?

问题:RStudio版本0.98.501,R版本3.0.2 x64,操作系统:Win 7 x64

1 个答案:

答案 0 :(得分:0)

data.frame的一列中的所有元素都必须具有相同的类型。因此,当您尝试读取列时,必须猜测您想要哪一个。在第二个示例中,它将第一行作为标题读入,然后猜测该列是数字。然后它会破坏名称,因为check.names设置为TRUE,并且您的标题名称不是“有效”名称(可能会导致问题),因此它会尝试修理它。

在你的第一个例子中,它读入第一行,猜测它是一个字符(因为它不是一个数字),然后整个列成为一个字符。

如果您想阅读此专栏,并使用$\{,}_作为标题名称,则可以执行以下操作:

read.table(
textConnection('\"$\\{,}_\"
45,2'),header=TRUE,check.names=FALSE,dec=',')

如果您想要阅读此数据,并将元素转换为numericcharacter,则必须将其作为字符阅读,然后自行转换,放置列表中的元素。