2016-12-09 4 views
-1

Ich habe eine Matrix 320X64 und ich mag die Variablen 64 ändern, so dass die ersten 8 gleich 0 und die letzten 56 gleich 1Wiederholungsfunktion in R

I die Wiederholfunktion versucht:

pen.vect<-(rep(0,8),rep(1,56)) 
penalty.factor<-pen.vect 

aber es funktioniert nicht

Danke :)

+3

Für eine bestehende Matrix namens myMat mit den Dimensionen 320 X 64, 'myMat [] <- rep (c (0, 1), c (8, 56) * 320)'. Von Grund auf neu aufbauen: 'myMat <- matrix (rep (c (0, 1), c (8, 56) * 320), 320)'. – lmo

Antwort

0

Sie können ganz einfach zwischen Matrizen und Datenrahmen ändern. Arbeiten mit einem Datenrahmen ermöglicht es Ihnen, diese leichter mit bracket notation zu erreichen:

bm <- as.data.frame(B) # assuming your matrix is called "B" 
bm[,1:8] <- 0 
bm[,9:56] <- 1 
B2 <- as.matrix(bm) 

Hier ist ein voll funktionierendes Beispiel mit Dummy-Daten:

B = matrix(c(2:65), nrow=320, ncol=64) # Create a matrix with dummy data 
bm <- as.data.frame(B)     # Change it to a data frame 
bm[,1:8] <- 0       # Change each row in the first 8 columns to 0 
bm[,9:56] <- 1       # Change the rest to 1 
B2 <- as.matrix(bm)     # Change the data back to a matrix 

Werfen Sie auch einen Blick auf this post für, wie man richtig poste eine R Frage. Ich bin ehrlich schockiert Ihre Frage wurde noch nicht gelöscht oder markiert. R on SO kann brutal sein.