2014-09-06 3 views
0

У меня есть список номеров (например, сильфонные):Исключить определенные столбцы из матрицы

[[178]] 
NULL 

[[179]] 
[1] 179 66 

[[180]] 
[1] 180 67 

[[181]] 
[1] 181 123 

[[182]] 
[1] 182 

Этот список содержит столбцы (179, 66, 180, 67, 181, 123) Я хочу, чтобы исключить из матрица.

Я попытался команды ржали, но они не работали:

MyMatrix[, !(unlist(MyList))] 
MyMatrix[, -(unlist(MyList))] 
MyMatrix[, !unlist(MyList)] 
MyMatrix[, -unlist(MyList)] 

Мой вопрос: что это правильный путь, чтобы исключить определенные столбцы из матрицы?

+0

Для confirm: это 'data.table', а не' data.frame', правильно? –

+0

@DavidRobinson, я исправил свою ошибку. По-видимому, эта структура данных является матрицей. – PoGibas

+4

Вы только что запустили строку 'MyMatrix [, - (unlist (MyList))]', а не код 'MyMatrix <- MyMatrix [, - (unlist (MyList))]'? (Если это так, это ваша ошибка). –

ответ

1

Вот моя небольшая репликация вашей проблемы.

listOfColumns<-list(NULL, c(2,3), 5, NULL) 
listOfColumns #print for viewing 
#output 
#[[1]] 
#NULL 

#[[2]] 
#[1] 2 3 

#[[3]] 
#[1] 5 

#[[4]] 
#NULL 

MyMatrix<-matrix(1:50, nrow=10, ncol=5) 
MyMatrix #print for viewing 
#output 
#  [,1] [,2] [,3] [,4] [,5] 
#[1,] 1 11 21 31 41 
#[2,] 2 12 22 32 42 
#[3,] 3 13 23 33 43 
#[4,] 4 14 24 34 44 
#[5,] 5 15 25 35 45 
#[6,] 6 16 26 36 46 
#[7,] 7 17 27 37 47 
#[8,] 8 18 28 38 48 
#[9,] 9 19 29 39 49 
#[10,] 10 20 30 40 50 

Во-первых, то, как вы будете хотеть, чтобы Подмножество вашу матрицу так, чтобы вы опустить заданные номера столбцов, чтобы сделать

MyMatrix[-columnNumbers] 

В R, отрицательные числа используются для подмножества соответствуют к записям, которые следует опустить.

Следующий выход вызова, что вы хотите

MyMatrix[,-unlist(listOfNumbers)] 
#output 
#  [,1] [,2] 
# [1,] 1 31 
# [2,] 2 32 
# [3,] 3 33 
# [4,] 4 34 
# [5,] 5 35 
# [6,] 6 36 
# [7,] 7 37 
# [8,] 8 38 
# [9,] 9 39 
# [10,] 10 40 

Если вы хотите сохранить этот результат для дальнейшего использования, вам необходимо хранить его (как Дэвид Робинсон получил в)

MySmallerMatrix<-MyMatrix[,-unlist(listOfNumbers)] 
Смежные вопросы