在向量前添加零

5
我们正在尝试将730个零值放在一个365 X 1的带值向量之前。我从另一个矩阵中截取了这个向量。因此,行索引号现在不再有用,令人困惑,例如,带值向量从50开始。如果我创建另一个带零值的向量或数组,然后使用rbind将其绑定到带值的向量之前,由于混乱的行索引号,它将生成奇怪的值并将其处理为3D元素。
感谢任何关于如何实现或如何重置行索引号的想法。最好的Fabian!
示例: 这是我的带值向量。
 pred_mean_temp
 366     -3.0538333
 367     -2.8492875
 368     -3.1645825
 369     -3.5301074
 370     -1.2463058
 371     -1.7036682
 372     -2.0127239
 373     -2.9040319
 ....

我想在一个零向量前面添加730行。这样它应该看起来像这样:
 1        0
 2        0
  ....
 731     -3.0538333   
 732     -2.8492875
 733     -3.1645825
  .... 

这似乎是rep函数的任务。 - gaussblurinc
3个回答

5

像这样的内容吗?

# create a vector
a <- rnorm(730)
# add the 0
a <- c(rep(0,730), a)

然后你可以做一个矩阵:
m <- cbind(1:length(a), a)

运行良好!但是,我首先需要将向量转置两次。 - Fabian Stolz

5

您需要使用c()函数来连接两个向量。要创建一个全零向量,可以使用rep()

以下是一个示例:

x <- rnorm(5)
x <- c(rep(0, 5), x)
x
 [1]  0.0000000  0.0000000  0.0000000  0.0000000  0.0000000  0.1149446  0.3839601 -0.5226029  0.2764657 -0.4225512

运行良好!但是,我首先需要将向量转置两次。 - Fabian Stolz

3

根据你的示例,看起来你的向量的类别是matrix。如果这是一个要求,那么以下内容应该有效:

set.seed(1)

# Create an example 2-column, 500-row matrix
xx<-matrix(rnorm(1000,-2),ncol=2,dimnames=list(1:500,
  c("pred_mean_temp","mean_temp")))

# Subset 365 rows from one column of the matrix, keeping the subset as a matrix
xxSub<-xx[50:(50+365-1),"pred_mean_temp",drop=FALSE]

xxSub[1:3,,drop=FALSE]
#    pred_mean_temp
# 50      -1.118892
# 51      -1.601894
# 52      -2.612026

# Create a matrix of zeroes and rbind them to the subset matrix
myMat<-rbind(matrix(rep(0,730)),xxSub)

# Change the first dimnames component (the row names) of the rbinded matrix
dimnames(myMat)[[1]]<-seq_len(nrow(myMat))

myMat[c(1:2,729:733),,drop=FALSE]
#     pred_mean_temp
# 1         0.000000
# 2         0.000000
# 729       0.000000
# 730       0.000000
# 731      -1.118892
# 732      -1.601894
# 733      -2.612026

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接