0

我有一个数组和一个向量,如下所示-

v<-c(2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0)
result<-matrix(1,9,1000)

现在,对于 vi 中的每个值,都想在结果矩阵中绘制一整行。例如。对于 vi 中的值 2.4 想要绘制点 (2.4,result[1,1]),(2.4,result[1,2]),(2.4,result[1,3]) 到 (2.4,result[1, 1000]),

当我尝试使用

 points(v[1],result[1,],pch=".")

我得到一个错误 - x 和 y 的长度不相等。

有什么办法可以做到吗?

4

2 回答 2

4

plot(cbind(v[1], result[1,]))将根据需要回收v[1]

于 2013-08-05T17:34:04.223 回答
1

根据您的描述,您可以将v数组视为数据的标签。让我们记住这一点来绘制数据,并使用 ggplot2:

首先将您的数组v变成与以下大小相同的东西result

require('ggplot2')
require('reshape')

# OP's original data
v<-c(2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0)    
v.mat <- matrix(v,9,1000)

# OP's original data
result<-matrix(1,9,1000)

接下来,我们用melt把这个数据变成一个长数据框

v.mat.melt <- melt(v.mat)
result.melt <- melt(result)

然后将我们需要的位组合成一个数据帧:

# combine data
data <- data.frame('v' = v.mat.melt[,3],
                   'obs' = result.melt[,2],
                   'result' = result.melt[,3])

请注意,我为“观察”添加了“obs”,这是观察的索引。我不使用它,但它可能很方便。

最后,把它全部画出来

d <- ggplot(data = data,
            aes(x = v,
                y = result,
                color = v)) + 
  geom_point()
print(d)

瞧: 结果

于 2013-08-05T17:40:53.740 回答