write.csv () чрезвычайно неожиданное поведение - PullRequest
2 голосов
/ 09 мая 2020

Происходит что-то объяснимое мне. У меня есть фрейм данных:

> head(df)
  id   lon    lat   temp month year            hr     prec       ws
1  1 27.75 -22.25 295.35     9 2018 0.00007675205 401.1297 12.88135
2  2 28.25 -22.25 295.95     9 2018 0.00008084041 426.3411 12.89902
3  3 28.75 -22.25 296.25     9 2018 0.00008487972 449.7063 12.63242
4  4 29.25 -22.25 296.45     9 2018 0.00009112679 484.3495 12.59484
5  5 29.75 -22.25 296.65     9 2018 0.00009995372 533.0175 12.28485
6  6 30.25 -22.25 296.95     9 2018 0.00010895965 583.8255 11.80009

он выглядит так:

> nrow(df)
[1] 607
> ncol(df)
[1] 9

когда я делаю write.csv(df, /data/df.csv), он записывает огромный CSV с десятками столбцов и тысячами строк. Кто-нибудь испытывал подобное поведение? Я перезагрузил свою машину, перезапустил R, обновил все, и по-прежнему постоянно вредоносен, это продолжает происходить.

Вывод dput(df): https://drive.google.com/file/d/1AkGK9Svwi9mSAcB0G3Ecx7aDC6ccnYRg/view?usp=sharing

1 Ответ

4 голосов
/ 09 мая 2020

str(x) поможет вам понять, что происходит.

x <- dget("fupedCSV.txt")
str(x)
## 'data.frame':    607 obs. of  9 variables:
## <a bunch of normal columns> ...
##  $ rh   :'data.frame':   607 obs. of  1 variable:
##   ..$ hr: num  7.68e-05 8.08e-05 8.49e-05 9.11e-05 1.00e-04 ...
##  $ prec :'data.frame':   607 obs. of  1 variable:
##   ..$ prec: num  401 426 450 484 533 ...
##  $ ws   :'data.frame':   607 obs. of  1 variable:
##   ..$ ws: num  12.9 12.9 12.6 12.6 12.3 ...

Обратите внимание на последние три столбца, которые на самом деле представляют собой фреймы данных, вложенные внутри фрейма данных.

## ORIGINAL: y <- as.data.frame(lapply(x, function(x) if (is.list(x)) x[[1]] else x ))
y <- do.call(data.frame,x)  ## thanks @akrun!
str(y)
## 'data.frame':    607 obs. of  9 variables:
##  $ id   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ lon  : num  27.8 28.2 28.8 29.2 29.8 ...
##  $ lat  : num  -22.2 -22.2 -22.2 -22.2 -22.2 ...
##  $ temp : num  295 296 296 296 297 ...
##  $ month: int  9 9 9 9 9 9 9 9 9 9 ...
##  $ year : int  2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
##  $ rh   : num  7.68e-05 8.08e-05 8.49e-05 9.11e-05 1.00e-04 ...
##  $ prec : num  401 426 450 484 533 ...
##  $ ws   : num  12.9 12.9 12.6 12.6 12.3 ...

Я не тестировал запись в файл, но думаю, что это решит вашу проблему.

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