У меня есть матрица, которая выглядит следующим образом:Subset столбцов матрицы, исключив все значения вектора
> expressionMatrix
Sample_1 Sample_2 Sample_3 Sample_4 Sample_5
Gene_1 1 2 3 4 5
Gene_2 6 7 8 9 10
и вектор:
outliers <- c("Sample_2", "Sample_3")
Если я прошу подмножество expressionMatrix
что включает в себя только образцы в outliers
, который работает отлично:
subset(expressionMatrix, select=outliers)
Sample_2 Sample_3
Gene_ 2 3
Gene_2 7 8
Однако, я не могу показаться, чтобы получить S ubset expressionMatrix
, который включает все образцы, ЗА ИСКЛЮЧЕНИЕМ те, что указаны в outliers
.
Я пробовал:
subset(expressionMatrix, select=-outliers)
но возвращает ошибку:
Error in -(outliers) : invalid argument to unary operator
Однако, с просьбой об исключении из значений в векторе (без кавычек) непосредственно делает работы:
subset(expressionMatrix, select=-c(Sample_2, Sample_3))
Sample_1 Sample_4 Sample_5
Gene_1 1 4 5
Gene_2 6 9 10
Я попытался сделать это с помощью выбросов с помощью конверсии а именно:
subset(expressionMatrix, select=-noquotes(outliers))
Но все та же ошибка.
Error in -noquote(outliers) : invalid argument to unary operator.
Почему функция subset
приема векторного объекта при запросе включения, но не тогда, когда просит исключение?
Спасибо за тщательное объяснение. Я до сих пор не понимаю, зачем передавать аргумент как 'select = - (noquote (outliers))' не работает. Я в основном передаю 'select = -c (Sample_2, Sample_3)', не я? – gaelgarcia
@PinkSharpie - нет, потому что 'noquote()' создает объект класса noquote, который не совпадает с объектом класса "name". Под ним объект «noquote» все еще является символьным символом. Хотя я понимаю путаницу, они выглядят одинаково. –
Плюс параметр 'select =' оставлен для ленивой оценки. Переменная «outliers» не будет достаточно быстро расширена в оценке для этого. Имена столбцов должны явно отображаться в параметре функции для расширения. – MrFlick