即使没有设置row.names,write.zoo仍然有row.names?

时间:2018-01-17 17:32:05

标签: r

考虑这个例子:z是一个写入csv的简单数据帧。

> z
        Date ID HH  
1 2018-01-01  1  4
2 2018-01-02  2  5
3 2018-01-03  3  6
> class(z)
[1] "data.frame"
> write.zoo(z, "z.csv", row.names=FALSE)

选项" row.names = FALSE"应该关闭行索引" 1,2,3"。但它并没有。索引仍在csv文件中,如果使用日期从z.csv文件读回,则返回错误:

> zz <- read.zoo("z.csv", header=T, format="%Y-%m-%d")
Error in read.zoo("z.csv", header = T, format = "%Y-%m-%d") : 
  index has bad entries at data rows: 1 2 3

write.zoo的语法有什么问题吗?如何摆脱指数?这是遗留代码,因此使用write.zoo(或read.zoo)比使用其他函数更容易。

1 个答案:

答案 0 :(得分:0)

您可以使用check.names = FALSE来解决使用实际动物园对象的问题,即

# install.packages(c("zoo"), dependencies = TRUE)
library(zoo)

z <- structure(c("2018-01-01", "2018-01-02", "2018-01-03", "1", "2", 
"3", "4", "5", "6"), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("Date", "ID", "HH")), index = 1:3, class = "zoo")
z
#>   Date       ID HH
#> 1 2018-01-01 1  4 
#> 2 2018-01-02 2  5 
#> 3 2018-01-03 3  6 
class(z)
#> [1] "zoo"  

write.zoo(z, "Zoo_bar.csv")

z2 <- read.zoo("Zoo_bar.csv", header = TRUE, check.names = FALSE)
z2
#>   Date       ID HH
#> 1 2018-01-01 1  4 
#> 2 2018-01-02 2  5 
#> 3 2018-01-03 3  6