【发布时间】:2018-04-26 15:34:26
【问题描述】:
我目前使用的是 R 3.5。 如果我使用 read.table 或 read.csv 读取 csv,则会插入另外三行。另外,第14行没有显示数字的第一个字符。这是bug还是特性?
这是我的示例代码和结果:
原始 csv:
Timestamps H_Accu_Cell_Temp
1 1 0.986812468128254
2 0.986812468128254 1
3 0.986545798058286 0.976126352748508
4 0.986163754276242 0.976075120964319
5 0.986849444565436 0.976334054547901
6 0.986474103568515 0.976091900039722
7 0.988482343788316 0.980937037663843
8 0.989252408009774 0.977824034185387
9 0.988385671670406 0.978756689011549
10 0.988243992921956 0.982650133549427
11 0.988233697491554 0.977553653045176
...
这是我的代码:
data <- read.table(file = file.input,
header = TRUE,
sep = "\t",
dec = ".",
quote = "\n")
然后我在 R 中有这些数据:
Timestamps H_Accu_Cell_Temp
1 .988482343788316 0.980937037663843
2 0.989252408009774 0.977824034185387
3 0.988385671670406 0.978756689011549
4 Timestamps H_Accu_Cell_Temp
5 1 0.986812468128254
6 0.986812468128254 1
7 0.986545798058286 0.976126352748508
8 0.986163754276242 0.976075120964319
9 0.986849444565436 0.976334054547901
10 0.986474103568515 0.976091900039722
11 0.988482343788316 0.980937037663843
12 0.989252408009774 0.977824034185387
13 0.988385671670406 0.978756689011549
14 .988243992921956 0.982650133549427
15 0.988233697491554 0.977553653045176
...
当我保存数据并读入我刚刚保存的数据时,我在这里得到这个:
write.table(data,
file = file.output,
append = FALSE,
quote = FALSE,
sep = "\t",
eol = "\n",
na = "NA",
dec = ".",
row.names = FALSE,
col.names = TRUE)
data <- read.table(file = file.output,
header = TRUE,
sep = "\t",
dec = ".",
quote = "\n")
Timestamps H_Accu_Cell_Temp
1 .986545798058286 0.976126352748508
2 0.986163754276242 0.976075120964319
3 0.986849444565436 0.976334054547901
4 Timestamps H_Accu_Cell_Temp
5 .988482343788316 0.980937037663843
6 0.989252408009774 0.977824034185387
7 0.988385671670406 0.978756689011549
8 Timestamps H_Accu_Cell_Temp_M1_PCB
9 1 0.986812468128254
10 0.986812468128254 1
11 0.986545798058286 0.976126352748508
12 0.986163754276242 0.976075120964319
13 0.986849444565436 0.976334054547901
14 .986474103568515 0.976091900039722
15 0.988482343788316 0.980937037663843
16 0.989252408009774 0.977824034185387
17 0.988385671670406 0.978756689011549
18 .988243992921956 0.982650133549427
19 0.988233697491554 0.977553653045176
...
我尝试了不同的文件以及 read.csv,但总是得到相同的结果。 我做错了什么还是真的是一个错误?有解决方法吗?
谢谢。
更新: 今晚我在几台计算机上用完全相同的文件尝试了完全相同的代码。唯一的区别是 R 3.4.4 安装在两台计算机上,另外两台 R 3.5.0 上。使用 R 3.4.4 它可以正常工作!只有 R 3.5.0 我有上述问题。我什至在计算机上尝试了 R 3.5.0(与上述问题相同),然后卸载了 R 3.5.0 并安装了 R 3.4.4,然后它工作正常。
这里是 R 3.5.0 和 RStudio 版本 1.1.442 的控制台输出:
> file.input <-'C:/temp/Correlationmatrix.csv'
> data <- read.table(file = file.input,
header = TRUE, sep = "\t", dec = ".", quote = "\n")
> print(data[1:5,1:2])
Timestamps H_Accu_Cell_Temp
1 .988482343788316 0.980937037663843
2 0.989252408009774 0.977824034185387
3 0.988385671670406 0.978756689011549
4 Timestamps H_Accu_Cell_Temp
5 1 0.986812468128254
>
这里是 R 3.4.4 和 RStudio 版本 1.1.442 的控制台输出:
> file.input <-'C:/temp/Correlationmatrix.csv'
> data <- read.table(file = file.input,
header = TRUE, sep = "\t", dec = ".", quote = "\n")
> print(data[1:5,1:2])
Timestamps H_Accu_Cell_Temp
1 1.0000000 0.9868125
2 0.9868125 1.0000000
3 0.9865458 0.9761264
4 0.9861638 0.9760751
5 0.9868494 0.9763341
>
由于上述原因,它一定与R 3.5.0的安装有关,而不是与我的代码有关。有没有人有类似的问题?有人可以帮帮我吗?
谢谢
【问题讨论】:
-
这不是制表符分隔的文件,只需使用
sep = ''(默认) -
当它是csv时,你为什么不使用
read.csv? -
非常感谢您的快速解答。这是一个制表符分隔的文件,否则我只会得到一列。无论如何,我尝试了 sep = ' ' 以及 read.csv,我仍然有这个问题......
-
嗯,我在你的例子上试过了,它对我有用。但它不是一个制表符分隔的文件,如果它是一个固定宽度的文件,你必须相信如果你有一个 tsv,第一行的制表符宽度与其他行不同
-
感谢您的尝试。我已经在另一台计算机(也是 Windows)上的同一网络驱动器上测试了具有相同数据的相同代码。在那里它完美地工作。唯一的区别是 R 3.4.4 仍然安装在该计算机上。如果我没有把结果呈现得那么漂亮,我很抱歉。我从 RStudio 控制台和 Notepad++ 复制了结果。
标签: r