我有一个制表符分隔数据,其中的列包含地址中包含逗号的地址。
我使用read.table将数据导入R,但是我的同事使用read.csv和sep =" \ t"要做同样的事情,我们在导入的数据框中都会得到不同的行数。
另外,当我在Excel中导入数据时,我得到与read.csv相同数量的记录,其中sep =" \ t"。
最具体的方法是,我可以验证哪个导入和记录数是正确的?
请让我知道我可以在这里添加哪些详细信息来帮助回答这个问题。
答案 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.csv
和read.table
之间存在差异。框架(记住,不止一个参数可能导致差异)。我可以很容易地看到header
,sep
,quote
,comment.char
和fill
参数可能影响输出中行数的方式。我无法想象dec
将如何产生这种影响,但如果重要的话,我不会感到惊讶。
作为一项规则,我倾向于期望不同的输入=不同的输出,当不同的输入=相同的输出时,我认为这是例外。你正在使用的函数是相似的,但它们的区别在于解释文本文件的方式不同,所以我期望它们产生不同的结果。哪个“正确”不是正确预先形成的函数之一,另一个是错误的,这是用户理解他们在输入方面所做的事情。