2013-09-28 4 views
1

Мне нужно добавить столбец в мою матрицу X. Он должен быть первым столбцом X, а все значения должны быть «1». Я попробовал команду cbind, но так или иначе я не мог это сделать. Если кто-то может мне помочь, это будет здорово.Как добавить столбец в матрицу

Код для X (из набора данных под названием "wagedata"

X <- as.matrix(wagedata[3:4]) 

Набор данных структурирован таким образом - для X я только Нед общеобразовательный и эксперти:.

wage IQ educ exper tenure age married black south 
    769 93 12 11 2 31 1 0 0 
    808 119 18 11 16 37 1 0 0 
+0

0 Пожалуйста, помогите нам помочь вам, предоставив нам воспроизводимый пример (т. код и данные примера), см. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example для деталей. –

+0

Пробовал ли вы 'cbind (1, wagedata [3: 4])'? – sgibb

ответ

2

Это похоже на работу Если это не работает для вас, возможно, столбец содержит символьные данные?

my.data <- read.table(text = ' 
wage IQ educ exper tenure age married black south 
    769 93 12 11 2 31 1 0 0 
    808 119 18 11 16 37 1 0 0 
', header = TRUE) 

my.matrix <- as.matrix(my.data) 

new.column <- rep(1, nrow(my.matrix)) 
my.matrix <- cbind(new.column, my.matrix) 
my.matrix 

#  new.column wage IQ educ exper tenure age married black south 
# [1,]   1 769 93 12 11  2 31  1  0  0 
# [2,]   1 808 119 18 11  16 37  1  0  0 

my.matrix[,c(1,3,4)] 
#  new.column IQ educ 
# [1,]   1 93 12 
# [2,]   1 119 18 

my.matrix[,c(1,4,5)] 
#  new.column educ exper 
# [1,]   1 12 11 
# [2,]   1 18 11 

Чтобы добавить новую колоду mn в середине матрицы:

my.matrix2 <- as.matrix(my.data) 
my.matrix2 <- cbind(my.matrix2[,1:5], new.column, my.matrix2[,6:9]) 
my.matrix2 

#  wage IQ educ exper tenure new.column age married black south 
# [1,] 769 93 12 11  2   1 31  1  0  0 
# [2,] 808 119 18 11  16   1 37  1  0  0 
+4

Вам не нужно называть 'rep'. 'cbind (1, my.matrix)' достаточно. – sgibb

+0

@sgibb Спасибо. Я все еще изучаю детали. Вы можете отредактировать сообщение, если хотите. Или мы можем оставить его как есть с вашим советом для улучшения в качестве комментария. –

+1

Таким образом, нет возможности динамически выделять дополнительные столбцы для матрицы, как вы можете, для векторных объектов и data.frames (с предупреждением в последнем случае)? Пример: 'foo <-runif (5); foo; foo [7] <- 42; foo;' – f1r3br4nd

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