0

我希望以等高线图的形式将分箱数据绘制为变量的函数,但是由于我仍然不习惯 R 处理数据结构的方式,我正在努力将我的数据强制转换为准备绘图的形式。我怀疑包含我的数据的最简单格式(例如,如果使用 lattice)将是以下形式的数据框:

X1  Z1  Y1
X2  Z2  Y2
X3  Z3  Y3
X4  Z4  Y4
Xn  Zn  Yn

目前我有以下形式的数据:

x <- as.numeric(c(-2,-1,0,1,2,3,4,5,6,7,8,10,15,20,30))
y <- head(logspace(-3.6,-1.7,15),-1) + diff(logspace(-3.6,-1.7,15))
z <- list(c(seq.int(30,1,length.out=15)),c(seq.int(35,1,length.out=15)),c(seq.int(40,1,length.out=15)),c(seq.int(45,1,length.out=15)),c(seq.int(50,1,length.out=15)),c(seq.int(60,1,length.out=15)),c(seq.int(55,1,length.out=15)),c(seq.int(50,1,length.out=15)),c(seq.int(40,1,length.out=15)),c(seq.int(30,1,length.out=15)),c(seq.int(20,1,length.out=15)),c(seq.int(10,1,length.out=15)),c(seq.int(10,1,length.out=15)),c(seq.int(10,1,length.out=15)))
names(z) <- paste("x", 1:14, sep = "")

因此,您将看到我有两个数字数据形式(x 和 y 维度)和我的 z 值在一个与 y 长度相同的列表中。该列表包含与 x 长度相同的数字数据形式。例如:

length(x)
[1] 15
length(y)
[1] 14
length(z)
[1] 14
length(z$x1)
[1] 15

所以我非常基本的问题是,将这些数据强制转换为合适的形式(可能是一个名为“mydata”的数据框?)的最佳方法是什么,例如:

require(lattice)
contourplot(z ~ x * y, data = mydata)

会产生一个情节?

4

1 回答 1

0

z 格式错误。最简单的方法是为每个观察创建一个包含一行的 data.frame。

my.data.frame <- expand.grid(x = 1:15, y = 1:14)
my.data.frame$z <- with(my.data.frame, x ^2 + x + x * y + y ^ 2 + y)
library(lattice)
contourplot(z ~ x * y, data = my.data.frame)
于 2013-08-14T14:18:01.227 回答