【发布时间】:2022-01-29 13:38:23
【问题描述】:
我正在尝试使用read.table 函数将一些.txt 数据导入R。我拥有的实际数据集又大又复杂,因此我将在这里使用一个可重现的小示例来说明我遇到的问题类型。为了说明问题,请考虑以下两个文本文件:
TEST.txt
|VAR1 |VAR2 |
|12 |F |
|56 |B |
|18 |A |
TEST2.txt
|VAR1 |VAR2# |
|12 |F |
|56 |B |
|18 |A |
(我知道这些分隔符比获取两列数据所需的要多;这就是我的文本数据的构造方式。通过忽略第一个和最后一个变量对我来说很容易处理导入的数据框,但它似乎会影响我遇到的问题,因此我将其包含在可重现的示例中。)这是我尝试导入这些数据框时发生的情况:
#Import the first table (this works fine)
read.table('TEST.txt', header = TRUE, fill = FALSE, sep = '|', strip.white = TRUE)[, 2:3]
VAR1 VAR2
1 12 F
2 56 B
3 18 A
#Import the second table (doesn't work)
read.table('TEST2.txt', header = TRUE, fill = FALSE, sep = '|', strip.white = TRUE)[, 2:3]
Error in read.table("TEST2.txt", header = TRUE, fill = FALSE, sep = "|", :
duplicate 'row.names' are not allowed
如您所见,第一个数据帧(不带井号)正确导入,但第二个(带 has 符号)未正确导入。显然变量名中的哈希符号导致了问题,但我不确定为什么,或者如何处理。
问题:为什么会出现这个问题?解决问题的最简单方法是什么,以便正确导入后一个数据框。 (我不希望对底层文本文件进行任何更改,因此更喜欢使用R 命令的解决方案。)
【问题讨论】:
-
R 不喜欢变量名中的符号:“一个语法上有效的名称由字母、数字和点或下划线字符组成,并以字母或点开头,而不是数字。名称如因为“.2way”无效,保留字也无效。” stackoverflow.com/questions/9195718/…
-
我不知道从 R 中删除那些的最佳实践,对不起!
-
read.table()中comment.char=的默认设置是comment.char="#",这会导致井号表示评论的开头。尝试使用comment.char=""。有关详细信息,请参阅手册页?read.table。