在 R 中导入 txt 文件 --- 为什么变量名称中的 # 符号会导致问题?

Importing txt file in R --- Why does # symbol in variable names cause problems?

我正在尝试使用 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 命令的解决方案。)

# 符号默认用于注释,因此将该值更改为其他值,正如@JonSpring 提到的,在列名称中具有 # 符号在语法上无效。所以允许使用 check.names = FALSE.

read.table(text = "|VAR1  |VAR2# |
|12    |F     |
|56    |B     |
|18    |A     |", header = TRUE, fill = FALSE, sep = '|', 
strip.white = TRUE, comment.char = "@", check.names = FALSE)[, 2:3]

#  VAR1 VAR2#
#1   12     F
#2   56     B
#3   18     A