我想将不同随机向量的结果绘制成线条(看它们就像随机走动一样),这样它们中的每一个都跟在前一个之后的序列中。
为此,我希望第二个向量的索引从第一个向量的开始处开始。
例如在
的情况下a <- cumsum(rnorm(10))
b <- cumsum(rnorm(10))
head(a)
[1] -0.03900184 -0.37913568 -0.42521156
head(b)
[1] 1.3861861 -0.2418804 1.1159065
两个向量都自然地从[1]
索引到[10]
。因此,如果我绘制它们,它们会重叠(左图),而我希望b
跟随a
轴中的x
(右图):
plot(a, type = "l", xlim=c(0,20), ylim=c(-10,10), xlab="", ylab="", col=2)
lines(b, col=3)
将b
附加到a
似乎是一种途径,但是当我对得到的向量进行子集化时,我会再次使用从零开始的向量...
答案 0 :(得分:2)
您可以在x
函数中指定lines
参数。
set.seed(146)
a <- cumsum(rnorm(10))
b <- cumsum(rnorm(10))
plot(a, type = "l", xlim=c(0,20), ylim=c(-10,10), xlab="", ylab="", col=2)
lines(x = 10:19, y = b, col=3)
答案 1 :(得分:0)
答案 2 :(得分:0)
使用ggplot2
?
library(tidyverse);
set.seed(2017);
a <- cumsum(rnorm(10))
b <- cumsum(rnorm(10))
stack(data.frame(a, b)) %>%
rowid_to_column("x") %>%
ggplot(aes(x, values)) +
geom_line(aes(colour = ind))
答案 3 :(得分:0)
如果数据点索引对您很重要,我假设您正在使用时间序列类型数据。您应该考虑对象创建的时间序列索引和所需操作的子集。这是一个例子
foo <- ts(1:10, frequency = 1, start = 1)
# Subset using time series indexing
foo1 <- ts(foo[1:5], start = index(foo)[1], frequency = frequency(foo))
foo6 <- ts(foo[6:10], start = index(foo)[6], frequency = frequency(foo))
# Combine using appropriate index
fooNew <- ts(c(foo1, foo6), start = start(foo1), frequency = frequency(foo1))