我有一个\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
答案 0 :(得分:0)
data.frame
的一列中的所有元素都必须具有相同的类型。因此,当您尝试读取列时,必须猜测您想要哪一个。在第二个示例中,它将第一行作为标题读入,然后猜测该列是数字。然后它会破坏名称,因为check.names
设置为TRUE
,并且您的标题名称不是“有效”名称(可能会导致问题),因此它会尝试修理它。
在你的第一个例子中,它读入第一行,猜测它是一个字符(因为它不是一个数字),然后整个列成为一个字符。
如果您想阅读此专栏,并使用$\{,}_
作为标题名称,则可以执行以下操作:
read.table(
textConnection('\"$\\{,}_\"
45,2'),header=TRUE,check.names=FALSE,dec=',')
如果您想要阅读此数据,并将元素转换为numeric
或character
,则必须将其作为字符阅读,然后自行转换,放置列表中的元素。