Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改R向量的索引?_R_Vector_Indexing - Fatal编程技术网

如何更改R向量的索引?

如何更改R向量的索引?,r,vector,indexing,R,Vector,Indexing,我想把不同随机向量的结果画成直线(像随机游动一样看),这样每一个向量都会在前一个向量之后按顺序排列 为此,我希望第二个向量的索引从第一个向量结束的地方开始 例如,在 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 将b添加到a似乎是一种途径,但当我对结果

我想把不同随机向量的结果画成直线(像随机游动一样看),这样每一个向量都会在前一个向量之后按顺序排列

为此,我希望第二个向量的索引从第一个向量结束的地方开始

例如,在

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


b
添加到
a
似乎是一种途径,但当我对结果向量进行子集运算时,我又得到了一个从零开始的向量…

您可以在
lines
函数中指定
x
参数

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)
set.seed(146)

a我们可以使用
NA
s创建一个新的
b
,直到
length(a)-1
,然后添加
a
的最后一个值,然后追加
b
,然后在
参数中使用这个
新的b

set.seed(1)

a <- cumsum(rnorm(10))
b <- cumsum(rnorm(10))

new_b <- c(rep(NA, length(a)-1),a[length(a)], b)

plot(a, type = "l", xlim=c(0,20), ylim=c(-10,10), xlab="", ylab="", col=2)
lines(new_b, col=3)
set.seed(1)

a使用
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))
library(tidyverse);
种子集(2017);
a%
ggplot(aes(x,值))+
几何线(aes(颜色=ind))

如果数据点索引对您很重要,我假设您使用的是时间序列类型的数据。您应该考虑对象创建和子设置的时间序列索引,以进行所需的操作。这里有一个例子

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))
foo
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))