2016-12-09 2 views
-1

У меня есть матрица 320X64, и я хочу, чтобы изменить 64 переменных, так что первые 8 равны 0, а последний 56 равным 1.Функция повтора в R

Я попробовал функцию повтора:

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

, но это не работает

Спасибо :)

+3

Для существующей матрицы с именем myMat с размерами 320 X 64, 'myMat [] <- rep (c (0, 1), c (8, 56) * 320)'. Чтобы построить с нуля: 'myMat <- matrix (rep (c (0, 1), c (8, 56) * 320), 320)'. – lmo

ответ

0

Вы можете переключаться между матрицами и кадров данных легко. Работа с кадра данных позволит вам сделать это проще с bracket notation:

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

Вот полный, рабочий пример с фиктивными данными:

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 

Кроме того, обратите внимание на this post о том, как правильно отправьте вопрос R. Я честно потрясен, что ваш вопрос еще не был удален или отмечен. R на SO может быть жестоким.

Смежные вопросы