2012-06-20 4 views
4

Nous essayons de mettre 730 valeurs zéro devant un vecteur de 365 X 1 avec des valeurs. Je découpe ce vecteur d'une autre matrice. Ainsi, les numéros d'index des lignes ne sont plus utiles et confus par exemple. le vecteur avec les valeurs commence par 50. Si je crée un autre vecteur ou un tableau avec les valeurs zéro, puis utiliser rbind pour lier avant le vecteur avec les valeurs, il va produire des valeurs étranges en raison de mélanger les numéros d'index de ligne et le gérer comme un élément 3d.Ajouter des zéros devant un vecteur

Merci pour toutes les idées sur la façon de réaliser cela ou comment réinitialiser les numéros d'index de ligne. Le meilleur Fabian!

Exemple: Ceci est mon vecteur avec des valeurs

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

Je veux ajouter un vecteur zéro avec 730 lignes devant elle. Il devrait ressembler à ceci:

1  0 
2  0 
    .... 
731  -3.0538333 
732  -2.8492875 
733  -3.1645825 
    .... 
+0

cela ressemble à la tâche pour la fonction 'rep' – gaussblurinc

Répondre

5

Quelque chose comme ça?

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

Ensuite, vous pouvez faire une matrice:

m <- cbind(1:length(a), a) 
+0

fonctionne très bien! Cependant, je devais d'abord transposer le vecteur deux fois –

3

Vous devez utiliser la fonction c() pour concaténer deux vecteurs. Pour créer un vecteur de zéros, utilisez rep():

Voici un exemple:

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 
+0

fonctionne très bien! Cependant, j'ai d'abord dû transposer le vecteur deux fois –

3

Sur la base de votre exemple, il semble que votre vecteur a la classe matrix. Si cela est une exigence, ce qui suit devrait fonctionner:

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 
Questions connexes