2017-08-09 5 views
1

J'essaie de concaténer un vecteur (appelons-y y) de longueur N x 1 à une matrice (appelons-le x) de longueur N x N. Chaque valeur de x doit être concaténée à la ligne correspondante, déterminée par la position de cette valeur dans x. Je cherche une réponse vectorisée qui ne repose pas sur une boucle. Pour illustrer:Concaténer un vecteur sur une trame

x <- as.data.frame(matrix(1:100,nrow=10,ncol=10)) 
y <- c(1:10) 

for(k in c(1:(ncol(x)))){ 
x[k,] <- paste0(y[k],x[k,]) 
} 

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
11 111 121 131 141 151 161 171 181 191 
22 212 222 232 242 252 262 272 282 292 
33 313 323 333 343 353 363 373 383 393 
44 414 424 434 444 454 464 474 484 494 
55 515 525 535 545 555 565 575 585 595 
66 616 626 636 646 656 666 676 686 696 
77 717 727 737 747 757 767 777 787 797 
88 818 828 838 848 858 868 878 888 898 
99 919 929 939 949 959 969 979 989 999 
1010 1020 1030 1040 1050 1060 1070 1080 1090 10100 

Répondre

1

Nous pouvons paste le vecteur 'y' avec matrix ('x') et lui attribuer la valeur à 'x'

x[] <- paste0(y, as.matrix(x)) 
x 
#  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
#1 11 111 121 131 141 151 161 171 181 191 
#2 22 212 222 232 242 252 262 272 282 292 
#3 33 313 323 333 343 353 363 373 383 393 
#4 44 414 424 434 444 454 464 474 484 494 
#5 55 515 525 535 545 555 565 575 585 595 
#6 66 616 626 636 646 656 666 676 686 696 
#7 77 717 727 737 747 757 767 777 787 797 
#8 88 818 828 838 848 858 868 878 888 898 
#9 99 919 929 939 949 959 969 979 989 999 
#10 1010 1020 1030 1040 1050 1060 1070 1080 1090 10100