Добавление нулей перед вектором

Мы пытаемся поместить 730 нулевых значений перед вектором 365 X 1 со значениями. Я вырезал этот вектор из другой матрицы. Таким образом, номера индексов строк теперь не более полезны и сбивают с толку, например. вектор со значениями начинается с 50. Если я создам другой вектор или массив с нулевыми значениями, а затем использую rbind для привязки его перед вектором со значениями, он будет создавать странные значения из-за перепутанных номеров индексов строк и обрабатывать их как 3D элемент.

Спасибо за любые идеи, как этого добиться или как сбросить номера индексов строк. лучший Фабиан!

Пример: это мой вектор со значениями

 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
  .... 

person Fabian Stolz    schedule 20.06.2012    source источник
comment
это звучит как задача для rep функции   -  person gaussblurinc    schedule 20.06.2012


Ответы (3)


Что-то вроде этого?

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

Затем вы можете сделать матрицу:

m <- cbind(1:length(a), a)
person johannes    schedule 20.06.2012
comment
работает отлично! Однако сначала мне пришлось два раза транспонировать вектор - person Fabian Stolz; 20.06.2012

Вам нужно использовать функцию 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
person Andrie    schedule 20.06.2012
comment
работает отлично! Однако сначала мне пришлось два раза транспонировать вектор - person Fabian Stolz; 20.06.2012

Судя по вашему примеру, ваш вектор имеет класс 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
person BenBarnes    schedule 20.06.2012