Три дополнительные строки с использованием read.table в R 3.5 - PullRequest
0 голосов
/ 26 апреля 2018

Я сейчас использую R 3.5. Если я читаю csv с read.table или read.csv, вставляются три дополнительные строки. Кроме того, первый символ числа не отображается в строке 14. Это ошибка или особенность?

Вот мой пример кода и результаты:

оригинал 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, но всегда с одинаковым результатом. Я делаю что-то не так или это действительно ошибка? Есть ли обходной путь?

Спасибо.

UPDATE: Сегодня вечером я попробовал один и тот же код с точно таким же файлом на нескольких компьютерах. Единственным отличием было то, что 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, а не с моим кодом. У кого-нибудь есть подобные проблемы? Кто-нибудь может мне помочь?

Спасибо

1 Ответ

0 голосов
/ 03 мая 2018

Я нашел проблему:

Проблема была в read.table (..., quote = "\ n" , ...). Если я удаляю кавычки, все отлично работает с read.table (..., sep = "\ t", ...).

Честно говоря, я до сих пор не знаю, почему это делает такую ​​разницу между R3.4.4 и R3.5. Но это работает. Спасибо всем за помощь, особенно rawr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...