阴谋。动物园 "invalid 'ylim' value"
plot. zoo "invalid 'ylim' value"
当我尝试使用 zoo 包绘制时间序列数据时,我遇到了:plot.window(...) 中的错误:无效 'ylim' 值。虽然 plot.zoo 给我错误,但 plot.ts 工作正常。 plot(mydata) 也给出了同样的错误。
已从如下所示的 .csv 文件中加载数据:
Value
03.01.2011 6.2100
04.01.2011 6.4280
05.01.2011 6.7290
06.01.2011 6.6000
07.01.2011 6.7970
...
mydata <- read.zoo(mydata, sep = "\t", header = TRUE, format = "%d.%m.%Y", fileEncoding = "UTF-16")
head(mydata)
Value
2011-01-03 6.210
2011-01-04 6.428
2011-01-05 6.729
2011-01-06 6.600
2011-01-07 6.797
dput(mydata)
structure(c(" 6.210", " 6.428", " 6.729", " 6.600", " 6.797", " ..."),
.Dim = c(2023L, 1L), .Dimnames = list(NULL, "Value"), index =
structure(c(14977, 14978, 14979, 14980, 14981, ...), class = "Date"), class = "zoo")
来自相同来源和背景的数据 (mydata2) 与 plot.zoo 完美配合。相反,它给了我一些不同的 dput() 输出。 值不在 "quotation marks (also no extra space before a first digit)" 之间,我想知道这是否是问题所在。
head(mydata2)
Value
2010-12-31 533.99
2011-01-03 541.30
2011-01-04 548.33
2011-01-05 544.73
2011-01-06 556.61
dput(mydata2)
structure(c(533.99, 541.3, 548.33, 544.73, 556.61, ...),
.Dim = c(2023L, 1L), .Dimnames = list(NULL, "Value"), index =
structure(c(14974, 14977, 14978, 14979, 14980, ...), class = "Date"), class = "zoo")
我已经使用上面提供的 read.zoo 将数据加载到两个 .csv 文件中。两者都有制表符(“\t”)作为分隔符,日期格式为 03.01.2019(“%d. %m.%Y"), 文件编码 ("UTF-16")。我不明白为什么一个数据加载了额外的 space 和引号,我认为这是 plot.zoo 函数出错的原因。
sapply(readLines(mydata, 6, skipNul = TRUE), charToRaw)
$`\tValue`
[1] 09 43 6c 6f 73 65
$`03.01.2011\t6.2100`
[1] 30 33 2e 30 31 2e 32 30 31 31 09 36 2e 32 31 30 30
$`04.01.2011\t6.4280`
[1] 30 34 2e 30 31 2e 32 30 31 31 09 36 2e 34 32 38 30
$`05.01.2011\t6.5900`
[1] 30 35 2e 30 31 2e 32 30 31 31 09 36 2e 35 39 30 30
$`06.01.2011\t6.6000`
[1] 30 36 2e 30 31 2e 32 30 31 31 09 36 2e 36 30 30 30
$`07.01.2011\t6.7970`
[1] 30 37 2e 30 31 2e 32 30 31 31 09 36 2e 37 39 37 30
问题没有提供输入,所以我们无法准确知道发生了什么,但可能有些字符它不理解并在输入中呈现为 space 或根本不呈现所以它认为输入是字符数据。
read.zoo
使用 read.table
,如果你用它阅读它,你可能会发现同样的问题。
您可以强制数据为数字。这对我有用:
library(zoo)
z <- structure(c(" 6.210", " 6.428", " 6.729", " 6.600", " 6.797"),
.Dim = c(5L, 1L), .Dimnames = list(NULL, "Value"), index =
structure(c(14977, 14978, 14979, 14980, 14981), class = "Date"), class = "zoo")
zz <- zoo(array(as.numeric(coredata(z)), dim(z)), index(z))
str(zz)
给予:
‘zoo’ series from 2011-01-03 to 2011-01-07
Data: num [1:5, 1] 6.21 6.43 6.73 6.6 6.8
Index: Date[1:5], format: "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" "2011-01-07"
当我尝试使用 zoo 包绘制时间序列数据时,我遇到了:plot.window(...) 中的错误:无效 'ylim' 值。虽然 plot.zoo 给我错误,但 plot.ts 工作正常。 plot(mydata) 也给出了同样的错误。
已从如下所示的 .csv 文件中加载数据:
Value
03.01.2011 6.2100
04.01.2011 6.4280
05.01.2011 6.7290
06.01.2011 6.6000
07.01.2011 6.7970
...
mydata <- read.zoo(mydata, sep = "\t", header = TRUE, format = "%d.%m.%Y", fileEncoding = "UTF-16")
head(mydata)
Value
2011-01-03 6.210
2011-01-04 6.428
2011-01-05 6.729
2011-01-06 6.600
2011-01-07 6.797
dput(mydata)
structure(c(" 6.210", " 6.428", " 6.729", " 6.600", " 6.797", " ..."),
.Dim = c(2023L, 1L), .Dimnames = list(NULL, "Value"), index =
structure(c(14977, 14978, 14979, 14980, 14981, ...), class = "Date"), class = "zoo")
来自相同来源和背景的数据 (mydata2) 与 plot.zoo 完美配合。相反,它给了我一些不同的 dput() 输出。 值不在 "quotation marks (also no extra space before a first digit)" 之间,我想知道这是否是问题所在。
head(mydata2)
Value
2010-12-31 533.99
2011-01-03 541.30
2011-01-04 548.33
2011-01-05 544.73
2011-01-06 556.61
dput(mydata2)
structure(c(533.99, 541.3, 548.33, 544.73, 556.61, ...),
.Dim = c(2023L, 1L), .Dimnames = list(NULL, "Value"), index =
structure(c(14974, 14977, 14978, 14979, 14980, ...), class = "Date"), class = "zoo")
我已经使用上面提供的 read.zoo 将数据加载到两个 .csv 文件中。两者都有制表符(“\t”)作为分隔符,日期格式为 03.01.2019(“%d. %m.%Y"), 文件编码 ("UTF-16")。我不明白为什么一个数据加载了额外的 space 和引号,我认为这是 plot.zoo 函数出错的原因。
sapply(readLines(mydata, 6, skipNul = TRUE), charToRaw)
$`\tValue`
[1] 09 43 6c 6f 73 65
$`03.01.2011\t6.2100`
[1] 30 33 2e 30 31 2e 32 30 31 31 09 36 2e 32 31 30 30
$`04.01.2011\t6.4280`
[1] 30 34 2e 30 31 2e 32 30 31 31 09 36 2e 34 32 38 30
$`05.01.2011\t6.5900`
[1] 30 35 2e 30 31 2e 32 30 31 31 09 36 2e 35 39 30 30
$`06.01.2011\t6.6000`
[1] 30 36 2e 30 31 2e 32 30 31 31 09 36 2e 36 30 30 30
$`07.01.2011\t6.7970`
[1] 30 37 2e 30 31 2e 32 30 31 31 09 36 2e 37 39 37 30
问题没有提供输入,所以我们无法准确知道发生了什么,但可能有些字符它不理解并在输入中呈现为 space 或根本不呈现所以它认为输入是字符数据。
read.zoo
使用 read.table
,如果你用它阅读它,你可能会发现同样的问题。
您可以强制数据为数字。这对我有用:
library(zoo)
z <- structure(c(" 6.210", " 6.428", " 6.729", " 6.600", " 6.797"),
.Dim = c(5L, 1L), .Dimnames = list(NULL, "Value"), index =
structure(c(14977, 14978, 14979, 14980, 14981), class = "Date"), class = "zoo")
zz <- zoo(array(as.numeric(coredata(z)), dim(z)), index(z))
str(zz)
给予:
‘zoo’ series from 2011-01-03 to 2011-01-07
Data: num [1:5, 1] 6.21 6.43 6.73 6.6 6.8
Index: Date[1:5], format: "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" "2011-01-07"