2014-09-02 176 views
0

我有一个包含以下5行代码的文本文件:[R注释字符#,不起作用

# 
# 1991 60060GBNYPAN 
# 1991 60061GBGTSJT 
# 1991 60062GBGTSJT 
# 

如果我打开Windows机器上的默认R GUI和粘贴那些五行我获得以下情况:

> # 
> # 
> 1991 60060GBNYPAN 
Error: unexpected numeric constant in "1991 60060" 
> # 1991 60061GBGTSJT 
> # 1991 60062GBGTSJT 
> # 
> 

当我的代码相同的五个线粘贴代替入Stack Overflow问题窗口我获得:

# 
# 
1991 60060GBNYPAN 
# 1991 60061GBGTSJT 
# 1991 60062GBGTSJT 
# 

如果我打开包含代码的文本文件导入gVim 7.4我看到:

#^M 
# 
1991 60060GBNYPAN^M 
# 1991 60061GBGTSJT^M 
# 1991 60062GBGTSJT^M 
#^M 

所有的人物都是蓝色gVim 7.4除了第三行中的(第一)1991是粉红色的字体和60060GBNYPAN是黑色的字体。从这里

:%s/<ctrl>Q<ctrl>M//g<return> 

我可以通过键入删除^MRead csv file with hidden or invisible character ^M

但是,如果我再点击保存文件:现在gVim 7.4File - Save,然后打开该文件的内容看起来如下:

## 1991 60060GBNYPAN# 1991 60061GBGTSJT# 1991 60062GBGTSJT# 

如果我将这些内容粘贴到R我得到:

> # 
> # 
> 1991 60060GBNYPAN 
Error: unexpected numeric constant in "1991 60060" 
> # 1991 60061GBGTSJT 
> # 1991 60062GBGTSJT 
> # 
> 

同我在gVim 7.4打开文件之前。

如果我打开该文件到gVim 7.4第二次(已删除了^M后保存的文件)我看到:

# 
# 
1991 60060GBNYPAN 
# 1991 60061GBGTSJT 
# 1991 60062GBGTSJT 
# 

字体的颜色没有改变,并在gVim 7.4底部窗口是一个消息,它读取:

<comment character does not work2.r" [unix] 6L, 74C  6,1  All 

的前和后6,1空格数只是一个估算值。

这是怎么回事?

我猜想除了^M之外,文件中还有另一个隐藏字符,与^M不同,在我打开gVim 7.4中的文件时,默认情况下不会显示该字符。

谢谢你的任何建议。我可能需要将原始文件加载到GitHub。在发布此消息后,我会尝试做到这一点。

编辑

虽然我有一个GitHub帐户,并上传文件到它,它已经这么久,我不记得如何上传这个最新的文件。希望我会很快上传文件。

如果键入:

:set list<return>gVim 7.4去除^M后,我看到:

$ 
#$ 
# $ 
1991 60060GBNYPAN$ 
# 1991 60061GBGTSJT$ 
# 1991 60062GBGTSJT$ 
#$ 

我认为:set list本来是要显示所有隐藏字符,但所有它显示一个空格在#$之间的第二行(或第三行,如果我算第一个$作为一行)。

+0

有几种类型的换行符,其中一个必须在第一行的“#”和“1991”之间。 – 2014-09-02 16:10:55

+0

@JoshuaUlrich谢谢。我很怀疑。希望我能弄清楚如何在gVim 7.4中看到它们并删除它们。 – 2014-09-02 16:16:54

+0

如果你想让它们在R中处理,用'ctrl-N'替换它们。注意可能需要一个用于read.table的comment.char。 – 2014-09-02 16:18:44

回答

2

要找到麻烦的字符,最好查看文件的hexdump。在Unix上,有很多这样的工具:hexdump/hd/od

由于您使用的是Windows,你可以使用xxd命令行工具附带的Vim。 :help 23.4(Vim用户手册的二进制文件主题)告诉您如何打开该文件,以及(在下使用XXD)如何将文件视为十六进制转储。