read.csv vs read.table - 难以比较结果

时间:2015-06-30 15:56:29

标签: r csv

我有一个制表符分隔数据,其中的列包含地址中包含逗号的地址。

我使用read.table将数据导入R,但是我的同事使用read.csv和sep =" \ t"要做同样的事情,我们在导入的数据框中都会得到不同的行数。

另外,当我在Excel中导入数据时,我得到与read.csv相同数量的记录,其中sep =" \ t"。

最具体的方法是,我可以验证哪个导入和记录数是正确的?

请让我知道我可以在这里添加哪些详细信息来帮助回答这个问题。

1 个答案:

答案 0 :(得分:1)

通过?read.table(两者都显示)阅读这两个功能的帮助文件。您会看到read.csv只是read.table,其中一些参数设置为不同的默认值。

其中一个论点是header。在read.table sep="\t"的情况下,请尝试使用header=TRUE

如果不起作用,请执行以下操作:read.table('file.txt', header=TRUE, sep="\t", quote="\"", dec=".", fill=TRUE, comment.char=""。该代码应该提供与read.csv完全相同的结果,因为我只是将所有参数设置为read.csv使用的参数。然后,您可以首先将其中一些参数更改回read.table默认值(通过不指定它们),以确定哪个参数导致数据的read.csvread.table之间存在差异。框架(记住,不止一个参数可能导致差异)。我可以很容易地看到headersepquotecomment.charfill参数可能影响输出中行数的方式。我无法想象dec将如何产生这种影响,但如果重要的话,我不会感到惊讶。

作为一项规则,我倾向于期望不同的输入=不同的输出,当不同的输入=相同的输出时,我认为这是例外。你正在使用的函数是相似的,但它们的区别在于解释文本文件的方式不同,所以我期望它们产生不同的结果。哪个“正确”不是正确预先形成的函数之一,另一个是错误的,这是用户理解他们在输入方面所做的事情。